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

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

场景说明

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

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

例如:

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;

核心原理解析

技术点 说明
LISTAGG Oracle聚合函数,用于将多行合并为一行,用分隔符连接
WITHIN GROUP 定义聚合排序方式
`(‘,’

示例

CZJG(代码) 对应名称
‘01,03’ ‘合格,不合格’

总结

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

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

以上为个人经验,希望能给大家一个参考,也希望大家多多支持IT俱乐部。

本文收集自网络,不代表IT俱乐部立场,转载请注明出处。https://www.2it.club/database/oracle/18718.html
上一篇
下一篇
联系我们

联系我们

在线咨询: QQ交谈

邮箱: 1120393934@qq.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部