SQL split 如何固定中间值

Shuang 260 信誉分
2024-10-29T03:09:36.3166667+00:00

我有个列存储的值如下:AAA.BBB.CCC ,DDD.EEE

在使用substring之后,我想要AAA和DDD在同一列,CCC和EEE同一列,DDD.EEE的中间固定为空值。

如图:

User's image 如何通过查询语句实现?

SQL Server | 其他

问题作者接受的答案

  1. LiHongMSFT-4306 31,621 信誉分
    2024-10-29T05:39:24.3666667+00:00

    如果你的数据中只有AAA.BBB.CCC ,DDD.EEE这两种格式的数据的话,那么你可以尝试下面这个语句:

    DECLARE @TBL TABLE(ID INT, [VALUE] VARCHAR(50))
    INSERT INTO @TBL VALUES
    (1,'AAA.BBB.CCC'),(2,'DDD.EEE')
    
    ;WITH CTE AS
    (
    SELECT [VALUE],
           PARSENAME([VALUE], 3) AS VALUE1,
    	   PARSENAME([VALUE], 2) AS VALUE2,
    	   PARSENAME([VALUE], 1) AS VALUE3 
    FROM @TBL
    )
    SELECT CASE WHEN VALUE1 IS NULL THEN VALUE2 ELSE VALUE1 END AS VALUE1,
           CASE WHEN VALUE1 IS NULL THEN NULL ELSE VALUE2 END AS VALUE2,
    	   VALUE3
    FROM CTE
    

    如果答案是正确的解决方案,请点击“接受答案”并投赞成票。如果您对此答案有其他疑问,请点击“评论”。


0 个其他答案

排序依据: 非常有帮助

你的答案

提问者可以将答案标记为“已接受”,审查方可以将答案标记为“已推荐”,这有助于用户了解答案是否解决了提问者的问题。