oracle 逗号分隔字符串列转多行数据

需求:数据库表中字段采用“,”分隔的长字符串,现将该字段以逗号切割转为多行。
备注:逗号可以改为其他符号,对应SQL做下简单的调整即可

  • table数据如下
ID  NAME
1   TEST1,TEST2
2   TEST3,TEST4
3   TEST4,TEST5
4   TEST1,TEST4
5   TEST2,TEST4,TEST5
  • 测试SQL如下:
SELECT ID, REGEXP_SUBSTR(NAME, '[^,]+', 1, LEVEL) NAME
FROM TITLE
CONNECT BY LEVEL <= REGEXP_COUNT(NAME, '[^,]+')
       AND ROWID = PRIOR ROWID
       AND PRIOR DBMS_RANDOM.VALUE IS NOT NULL
ORDER BY NAME;
  • 结果如下:
ID  NAME
4   TEST1
1   TEST1
1   TEST2
5   TEST2
2   TEST3
4   TEST4
2   TEST4
5   TEST4
3   TEST4
5   TEST5
3   TEST5
                    oracle 逗号分隔字符串列转多行数据需求:数据库表中字段采用“,”分隔的长字符串,现将该字段以逗号切割转为多行。备注:逗号可以改为其他符号,对应SQL做下简单的调整即可table数据如下ID  NAME1   TEST1,TEST22   TEST3,TEST43   TEST4,TEST54   TEST1,TEST45   TEST2,TEST4,TEST5测试SQL如下:SELECT ID, REGEXP_SUBSTR(NAME, '[^,]+', 1, LEVEL
SELECT DISTINCT T.NAME,
       REPLACE(REGEXP_SUBSTR(T.TESTSTR, '[^,]+', 1, LEVEL), ',', ' ') TESTSTR
FROM TEST2 T
WHERE 1 = 1
      CONNECT BY LEVEL <= (LENGTH(T.TESTSTR) - LENGTH(REPLACE(T.TESTSTR, ',', '')) + 1);
-- Create table TEST2
create
				
近期在工作中遇到某表某字段是可扩展数据内容,信息以逗号分隔生成的,现需求要根据此字段数据在其它表查询相关的内容展现出来,第一想法是切割数据,以逗号作为切割符,以下为总结的实现方法,以供大家参考、指教。 SELECT ID, REGEXP_SUBSTR(NAME, '[^,]+', 1, LEVEL) NAME FROM TITLE CONNECT BY LEVEL <= REGEXP_COUNT(NAME, '[^,]+')
oracle中如何一个逗号分隔字符串分隔多行? 最近开发了一个功能,为了方便查询,某个表中的某个字段存成了逗号分隔字符串 然后,在进行表关联查询时,需要将字符串分隔多行, but,不记得怎么写了,之前用过的方法也忘记了。。。然后去百度搜,功夫不负有心人啊,终于查到了解决办法,于是开始写–》执行–》嗯,可以执行 就是这种方法,百度出来的大部分都是这种方法。。 我前面还有一篇文章是关于这个方法,在使用的时候多出一个引号的问题 奇怪的是,这个方法在本地、测试、演示环境都可以用,都可以正常执行,但是到了生
分割单行数据 我们需要使用REGEXP_SUBSTR和REGEXP_COUNT两个ORACLE函数 function REGEXP_SUBSTR(string, pattern, position, occurrence, modifier) string:需要进行正则处理的字符串 pattern:进行匹配的正则表达式 position:起始位置,从第几个字符开始正则表达式匹配(默认为1) occ...
可以使用正则表达式和CONNECT BY LEVEL语句来实现逗号分隔字符串去重。具体方法可以参考以下SQL语句: SELECT DISTINCT REGEXP_SUBSTR('A,B,C,A,D,E,F', '[^,]+', 1, LEVEL) AS str FROM DUAL CONNECT BY LEVEL <= REGEXP_COUNT('A,B,C,A,D,E,F', ',') + 1; 这个语句可以将逗号分隔字符串'A,B,C,A,D,E,F'去重后输出。