码迷,mamicode.com
首页 > 数据库 > 详细

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

时间:2019-08-07 19:12:20      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:逗号   The   end   order   pos   信息   union   现在   agg   

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

标签:逗号   The   end   order   pos   信息   union   现在   agg   

原文地址:https://www.cnblogs.com/anyongkang/p/11317071.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!