oracle将一个字段拆分成多个值 (regexp_substr函数)

select regexp_substr(p.attributename, ‘[^,]+‘,1,level) c1
from tablename p
connect by level <= length(p.attributename) - length(replace(p.attributename,‘,‘,‘‘)) + 1

--创建记录表(包含数据记录)CREATE TABLE old_employee AS SELECT * FROM employee; 

create table yyb_serv
(
SERV_CODE VARCHAR2(1024),
CMD_LIST VARCHAR2(100)
)

insert into yyb_serv values(‘111‘,‘1000,10001,10002‘)
select * from yyb_serv

----将一张表结构及表数据 插入到新表中  (数据结构及表数据都会同步)
create table old_yyb_serv AS (select * from yyb_serv)

----将拆分的数据插入到表
insert into yyb_serv(SERV_CODE,CMD_LIST)
select SERV_CODE, regexp_substr(p.CMD_LIST, ‘[^,]+‘,1,level) c1
from yyb_serv p
connect by level <= length(p.CMD_LIST) - length(replace(p.CMD_LIST,‘,‘,‘‘)) + 1

原文地址:https://www.cnblogs.com/yangpeng-jingjing/p/9239125.html

时间: 2024-10-08 15:49:54

oracle将一个字段拆分成多个值 (regexp_substr函数)的相关文章

SQL SERVER 一行按照某个由分隔符拼接的字段拆分成多行

数据库应用系统经常会遇到,某个字段存储通过分隔符来连接键值字符串,例如下表FileHistory 结构中列:Keywords 我们可能在某些业务场景下转换成以下形式: 首先,创建sql 函数,将拼接的字符串拆分成table CREATE FUNCTION [dbo].[UF_SplitStringToTable]( @sInputList VARCHAR(MAX) -- List of delimited items , @sDelimiter VARCHAR(20) = ',' -- deli

oracle 将一个字符串分割成多行

第一种方法: select substr(t,1,instr(t,',',1)-1) from (select substr(s,instr(s,',',1,rownum)+1)||',' as t,rownum as d ,instr(s,',',1,rownum)+1 from (select ',tt,aa,bb'  as s from dual)connect by instr(s,',','1',rownum)>1) 查询结果: SUBSTR(T,1,INSTR(T,',',1)-1)

oracle 将一行拆分成多行

DROP TABLE TEST PURGE ;CREATE TABLE TEST (po_number VARCHAR2(16),product_name VARCHAR2(64),quantity NUMBER);INSERT INTO TEST VALUES('CJ201300048','TP-LINK网络交换机TP-1024DT ', 2);INSERT INTO TEST VALUES('CJ201300049','汉邦4路/特顿 600线半球/希捷硬盘500G',1);INSERT I

Oracle 字段拆分替换在合并成一条

看了网上很多Oracle字段拆分的实例,但是都未能完全满足要求,或许是我水平不够未能很好的理解,如果有大神懂得并且愿意告知我的,可以私信我,在这里真诚的感谢! 1. 首先建立表并插入测试数据 drop table col_split; create table col_split ( var_id varchar2(6), var_value varchar2(80) ); 1--insert into col_split values('101001','spt001,spt2,spt3,sp

veridata实验举例(5)修改主键上的列值,update操作会被拆分成两条语句

veridata实验举例(5)修改主键上的列值,update操作会被拆分成两条语句 续接"veridata实验举例(4)验证veridata查找出updata.delete操作导致的不同步现象",地址:点击打开链接 环境: Item Source System Target System Platform Red Hat Enterprise Linux Server release 5.4 Red Hat Enterprise Linux Server release 5.4 Hos

对于Oracle中Number类型的字段映射成Java中的具体类型的问题

我在Oracle中给一个用户Id字段设置为Number类型,使用JDBC在完成ORM的时候,以为其可以自动转换为Integer,因为我的POJO类id舒心实用的就是Integer.但事实是,我在测试的时候,发现所有的用户id全为null,还在奇怪明明数据库中id是有值的,为什么取不到? 原因在于Oracle的Number类型映射为Java类型中的 java.math.BigDecimal (不可变的.任意精度的有符号十进制数)类型,并不是我简单认为的 Integer ,还会报一个错误: 就是说B

sql 表值函数-将一个传入的字符串用2中分隔符拆分成临时表

USE [tms]GO/****** Object: UserDefinedFunction [dbo].[fn_StrToTable_Double] Script Date: 2017/4/26 9:07:38 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- =============================================-- Author: HXQ-- Create date: 2016年8月9日18:0

把1到100的数字拆分成字典中的两个键值对 python

需求:把1到100的列表拆分成字典中两个键值对,k1和k2. #!/usr/bin/python num = {} all_list = [] for nu in range(1101): all_list.append(nu) for i in all_list: if i < 75: if 'k1' in num.keys(): num['k1'].append(i) else: num['k1'] = [i, ] else: if 'k2' in num.keys(): num['k2']

[Oracle]根据字段值全库搜索相关数据表和字段

这个需求比较冷门,但对于在某些特定的情况下,还是会有这样的需要的.好在Oracle实现还比较方便,用存储过程则轻松实现. 查询字符串: create or replace procedure search_string(pString in varchar) as cursor all_tab_cursor is select a.owner, a.table_name, b.column_name from dba_tables a, dba_tab_columns b, dba_object