开发者社区 问答 正文

字符串拆分字符串具有多列相同的分隔符

我有以下字符串

'06/30/2020;58044.373;.001;12/31/2020;58042.373;.003;06/30/2021;78044.373;.007'
我需要将其转换为:

col 1       col 2         col 3
----        -----         -----
06/30/2020  58044.373     .001
12/31/2020  58042.373     .003
06/30/2021  78044.373     .007

我只能使用statmets,不能使用游标或SP。

有什么帮助吗?

展开
收起
祖安文状元 2020-01-04 15:41:52 461 分享 版权
1 条回答
写回答
取消 提交回答
  • 解决方法STRING_SPLIT(不安全):

    WITH cte AS (
      SELECT c, value,
          ROW_NUMBER() OVER(ORDER BY (SELECT 1)) % 3 AS rn,
          (ROW_NUMBER() OVER(ORDER BY (SELECT 1))-1) / 3 AS grp
      FROM t
      CROSS APPLY STRING_SPLIT(c, ';')
    )
    SELECT MAX(CASE WHEN rn = 1 THEN value END) AS col1,
           MAX(CASE WHEN rn = 2 THEN value END) AS col2,
           MAX(CASE WHEN rn = 0 THEN value END) AS col3
    FROM cte
    GROUP BY c,grp;
    
    2020-01-04 15:42:02
    赞同 展开评论
问答地址: