我正在使用SSMS,有一个小问题,就是关于 STRING_SPLIT
函数。假设我有以下记录,我想用逗号分割性别。
现在,我找到的唯一方法是如何用逗号分割性别,并得到性别列中的所有值。
我想知道的是,是否可以将性别列分割,但将值放在其他列中,即姓名中的鲍勃,姓氏中的史密斯和性别中的男性。
Name Surname Gender
-------------------------------------
Bob,Smith,Male
Jane,Walson,Female
你可以将你的字符串转换为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;
结果: