db2递归一个以分隔符隔开的字段

删除回忆录丶 提交于 2019-11-26 07:54:47

  项目很多业务表中存储的信息都是以逗号分隔的业务数据,在统计、转码的时候很是不便,使用 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)

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!