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

Posted anyongkang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了db2递归一个以分隔符隔开的字段相关的知识,希望对你有一定的参考价值。

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

 

以上是关于db2递归一个以分隔符隔开的字段的主要内容,如果未能解决你的问题,请参考以下文章

mysql 两个以逗号分隔字段怎么匹配

oracle 以‘’分割的长字段拆分成多个(很多)字段

db2 对字符串进行分隔(分隔符为逗号),并计算分隔得到的数组的长度,不写自定义函数,如何做到?

for循环间隔修改(解决把以空格隔开需要把一整行作为整体)

如何编写 DB2 选择查询以在“-”分隔符之前包含字符串

mysql中将一列以逗号分隔的值分割成多列显示?