【发布时间】:2018-12-25 04:24:23
【问题描述】:
我正在尝试将逗号分隔 (,) 值从一个字符串拆分为多个列
样本数据:
COL1 COL2 COL3
000002,000003,000042 09,31,51 007,004,007
预期输出:
Pno Cno Sno
000002 09 007
000003 31 004
000042 51 007
我尝试了以下查询:
SELECT SUBSTRING_INDEX(COL1, ',', 1) Pno
,SUBSTRING_INDEX(COL2, ',', 1) Cno
,SUBSTRING_INDEX(COL3, ',', 1) Sno
FROM MyTargetTable
结果:
Pno Cno Sno
000002 09 007
我可能在每列中得到超过 3 行,我想知道是否有任何方法可以在不指定子字符串位置的情况下实现这一点。
可能的输入数据也可能是这样的
COL1 COL2 COL3
000002,000003,000042,,000002 09,31,51,,32 007,004,007,,012
【问题讨论】:
-
简单修复:没有分隔值。规范化你的架构!
-
@strawberry 赞赏作为最佳实践,这些值将从集成软件进入临时表
-
好吧,您可能在一列中有重复的值这一事实使这非常棘手。
-
@Strawberry 如果所有 3 列都有重复值,我们可以使用 distinct from select 查询