STRING_SPLIT 通过逗号到不同的表

STRING_SPLIT by comma to different tables

我正在使用 SSMS,但在 STRING_SPLIT 函数方面有一个小问题。假设我有以下记录,我想用逗号分隔性别。

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

我想知道是否可以拆分性别列,但将值放在其他列中,即姓名为 Bob,姓氏为 Smith,性别为男性。

Name    Surname    Gender
-------------------------------------
                   Bob,Smith,Male
                   Jane,Walson,Female

您可以将字符串转换为 XML,然后利用 XML 类型的方法(例如 VALUE(更多信息 here)来提取所需的输出您需要的信息:

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;

结果: