当前位置: 代码网 > it编程>数据库>Oracle > Oracle中如何将逗号分隔的代码字段批量转换为名称列表

Oracle中如何将逗号分隔的代码字段批量转换为名称列表

2026年09月10日 Oracle 我要评论
场景说明在日常数据库设计中,为了简化字段结构,我们有时会将多选项值(如复选框结果)以逗号分隔的字符串形式存储。例如:czjg 字段值:'01,03,05'这些代码代表不同的含义(如处理结果项),我们在

场景说明

在日常数据库设计中,为了简化字段结构,

我们有时会将多选项值(如复选框结果)以逗号分隔的字符串形式存储。

例如:

czjg 字段值:'01,03,05'

这些代码代表不同的含义(如处理结果项),我们在展示或查询时,往往需要将其转换成对应的名称列表

目标

将逗号分隔的代码字段

(如 "01,03")转换为对应的名称(如 "合格,不合格")。

sql 实现方式

使用 listagg + 子查询 + like 模糊匹配的方式进行实现:

select 
    pkid,
    (
        select 
            listagg(b.mc, ',') within group (order by b.dm)
        from 
            zhxg_xtgl_dmk_cl b
        where 
            b.dmbz = 'xlzx_zdgzxs_czjg'
            and (',' || t.czjg || ',') like '%,' || b.dm || ',%'
    ) as czjgmc
from 
    shxd_xlzx_zdgz_gzsf t;

核心原理解析

技术点说明
listaggoracle聚合函数,用于将多行合并为一行,用分隔符连接
within group定义聚合排序方式
`(','

示例

czjg(代码)对应名称
'01,03''合格,不合格'

总结

这种写法适用于逗号分隔的多值字段码表字段之间的多对多转换展示,在报表、页面渲染时非常实用。

如果你正在开发 oracle 项目,有这类存储结构,可以直接套用以上 sql!

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com