STRING_SPLIT用逗号连接到不同的表格。

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

我正在使用SSMS,有一个小问题,就是关于 STRING_SPLIT 函数。假设我有以下记录,我想用逗号分割性别。

现在,我找到的唯一方法是如何用逗号分割性别,并得到性别列中的所有值。

我想知道的是,是否可以将性别列分割,但将值放在其他列中,即姓名中的鲍勃,姓氏中的史密斯和性别中的男性。

Name    Surname    Gender
-------------------------------------
                   Bob,Smith,Male
                   Jane,Walson,Female
string split ssms
1个回答
2
投票

你可以将你的字符串转换为XML,然后利用XML类型的方法来实现所需的输出,如 VALUE (更多信息 此处)来提取你需要的信息。

DECLARE @tmp TABLE (OriginalString VARCHAR(100));

INSERT INTO @tmp
VALUES 
     ('Bob,Smith,Male')
    ,('Jane,Walson,Female')
;WITH Splitted
AS (
    SELECT  
         CAST('<x>' + REPLACE(OriginalString, ',', '</x><x>') + '</x>' AS XML) AS Parts
    FROM @tmp
    )
SELECT
     Parts.value(N'/x[1]', 'varchar(50)') as [Name]
    ,Parts.value(N'/x[2]', 'varchar(50)') as [Surname]
    ,Parts.value(N'/x[3]', 'varchar(50)') as [Gender]
FROM Splitted;

结果:

enter image description here

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