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;
结果:
我正在使用 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;
结果: