如何在 SQL 中将 varchar 列中的值拆分为多行?

问题描述 投票:0回答:1

我有一个表,其中第 1 列包含 01.02.2001;16.07.2003;25.08.2005 等属于 ID = 1 的人的值,看起来像这样

人员_ID 第_1栏
1 2001年2月1日;2003年7月16日;2005年8月25日

这是用 ; 分隔的 3 个日期

我想将日期分成 3 行,这样所有的日期仍然会有 ID 为 1 的人

这就是我想要的最终结果:

人员_ID 第_1栏
1 2001年2月1日
1 2003年7月16日
1 2005年8月25日

我尝试了 CROSS APPLY STRING_SPLIT(Column_1, ';') 但它没有给出预期的结果。

sql mysql split varchar nvarchar
1个回答
0
投票
WITH cte (Person_ID, Column_1) AS (
  SELECT 1, '01.02.2001;16.07.2003;25.08.2005'
  )
SELECT cte.Person_ID, jsontable.Column_1
FROM cte
CROSS JOIN JSON_TABLE(CONCAT('["', REPLACE(cte.Column_1, ';', '","'), '"]'),
                      '$[*]' COLUMNS (Column_1 VARCHAR(255) PATH '$')) jsontable;
人员_ID 第_1栏
1 2001年2月1日
1 2003年7月16日
1 2005年8月25日

小提琴

© www.soinside.com 2019 - 2024. All rights reserved.