当前位置:   article > 正文

sql语句实现按照逗号分割,一行数据变成多行数据_sql按逗号拆分为多行

sql按逗号拆分为多行

数据样式

结果

sql语句

  1. with temp as(
  2. select * from (SELECT AA.* FROM AA )aa
  3. left join (select rownum as r_rownum from dual connect by rownum <=10) bb
  4. on (length(aa.AA) - length(replace(aa.AA,',',''))+1) >= bb.r_rownum)
  5. select data_date,AA,regexp_substr(AA,'[^,]+',1,r_rownum),r_rownum from temp

解释:

通过dual表生成10条数据对AA表进行关联,把数据扩展成按照逗号分隔后的长度,接下来处理逗号分隔后的数据,使用regexp_substr函数进行数据分隔,如果是hive sql 可以结合explode函数和lateral view侧视图  来进行实现

REGEXP_SUBSTR(String, pattern, position, occurrence, modifier)
string:需要进行正则处理的字符串
pattern:进行匹配的正则表达式
position:起始位置,从字符串的第几个字符开始正则表达式匹配(默认为1) 注意:字符串最初的位置是1而不是0
occurrence:获取第几个分割出来的组(分割后最初的字符串会按分割的顺序排列成组)
modifier:模式(‘i’不区分大小写进行检索;‘c’区分大小写进行检索。默认为’c’)针对的是正则表达式里字符大小写的匹配

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号