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递归一个以分隔符隔开的字段的主要内容,如果未能解决你的问题,请参考以下文章