sql 字段数据拆分

原始数据:

行转列可以不懂可以参考我的博客:https://blog.csdn.net/qq_27600723/article/details/80687764

SELECT bz.bzmc,bz.jdgs,listagg(to_char(bz.lx),',') within group (order by to_char(bz.lx)) lx

  FROM GZWZ_BZMCZJDGS bz group by bz.bzmc,bz.jdgs

sql 字段数据拆分_第1张图片

-- 注意:

-- length(lx):求lx字符串长度

-- instr(lx,','): 求逗号第一次出现的下标

-- substr(lx,instr(lx,',',-1,1)+1,length(lx)):获取最后一个拼接数据

-- sql 字段数据拆分,获取最后一个拼接数据
select bzmc,jdgs,substr(lx,instr(lx,',',-1,1)+1,length(lx)) lx from (SELECT bz.bzmc,bz.jdgs,listagg(to_char(bz.lx),',') within group (order by to_char(bz.lx)) lx
  FROM GZWZ_BZMCZJDGS bz group by bz.bzmc,bz.jdgs);

sql 字段数据拆分_第2张图片

-- 注意:

-- REGEXP_SUBSTR(lx,'[^,]+',1,1,'i') : 使用正则匹配第一个逗号,"i"表示忽略大小写

-- sql 字段数据拆分,获取第一个拼接数据
SELECT REGEXP_SUBSTR(lx,'[^,]+',1,1,'i') AS STR FROM (SELECT bz.bzmc,bz.jdgs,listagg(to_char(bz.lx),',') within group (order by to_char(bz.lx)) lx

  FROM GZWZ_BZMCZJDGS bz group by bz.bzmc,bz.jdgs);

sql 字段数据拆分_第3张图片

你可能感兴趣的:(sql)