Oracle SQL如何仅用SELECT语句将逗号分隔字符串拆分至多列
Oracle逗号分隔字段拆列解法
直接使用Oracle内置正则拆分函数即可实现纯SELECT拆列,无需新建表,语句如下:
SELECT agentname AS AGENT, TRIM(REGEXP_SUBSTR(categories, '[^,]+', 1, 1)) AS CATA, TRIM(REGEXP_SUBSTR(categories, '[^,]+', 1, 2)) AS CATB, TRIM(REGEXP_SUBSTR(categories, '[^,]+', 1, 3)) AS CATC, TRIM(REGEXP_SUBSTR(categories, '[^,]+', 1, 4)) AS CATD, -- 若需支持更多分隔值,按下方格式新增列即可,第四个参数为拆分后取值的位置 TRIM(REGEXP_SUBSTR(categories, '[^,]+', 1, 5)) AS CATE FROM commasplit;
逻辑说明
REGEXP_SUBSTR第三个参数为匹配起始位置,固定填1即可,第四个参数指定取拆分后的第几个值- 外层
TRIM用于清理分隔值前后的多余空格,适配样例中逗号后带空格的场景 - 超出字段实际拆分数量的列会自动返回NULL,符合预期结果要求
执行上述语句即可得到目标输出,若后续确认分隔值上限高于5,按规则新增对应列即可。
内容的提问来源于stack exchange,提问作者Nicko
相关产品推荐
相关产品推荐

