项目很多业务表中存储的信息都是以逗号分隔的业务数据,在统计、转码的时候很是不便,使用 with X(‘‘,‘‘) as values(‘‘,‘‘) 对结果方便递归操作。db2一个字段由多个数据以逗号分隔,分隔的数据为字典表的code,现在要通过sql将该字段直接转换为字典code对应的name,参考下图:
图1转成图二
图一
图二
WITH n ( str, ori, pos, USER ) AS ( VALUES ( concat(‘1,2‘,‘,‘), 1, posstr(concat(‘1,2‘ ,‘,‘), ‘,‘), ‘402882775f0e5084015f10cdaa00006a‘ ) UNION ALL SELECT str, pos+1, locate(‘,‘, str, pos+1), USER FROM n WHERE locate(‘,‘, str, pos+1)>0 ) SELECT LISTAGG(s.CODE_NAME,‘,‘) WITHIN GROUP( ORDER BY n.USER) FROM n, SYS_CODE_LIST s WHERE s.CODE_ID = substr(str,ori, CASE pos-ori WHEN -1 THEN 32 ELSE pos - ori END)
原文地址:https://www.cnblogs.com/anyongkang/p/11317071.html
时间: 2024-10-11 00:09:01