如何在SQL中提取行中的csv分隔值?
我想知道如何在SQL中提取以下信息,例如:如何在SQL中提取行中的csv分隔值?,sql,tsql,sql-server-2014,Sql,Tsql,Sql Server 2014,我想知道如何在SQL中提取以下信息,例如: ID Hobbies 1 Swimming; Dancing; Zumba 2 Swimming; Eating; Baseball 3 Hockey; Polo; Fishing 现在,我只想以字母顺序中首字母最低的运动为例。在这种情况下,它将是: ID Hobbies (min) 1 Dancing 2 Baseball 3 Fishing 一个更一般的问题可能是,是否可以恢复XML行连接的过程 PS:我目前正在使用SQL Serv
ID Hobbies
1 Swimming; Dancing; Zumba
2 Swimming; Eating; Baseball
3 Hockey; Polo; Fishing
现在,我只想以字母顺序中首字母最低的运动为例。在这种情况下,它将是:
ID Hobbies (min)
1 Dancing
2 Baseball
3 Fishing
一个更一般的问题可能是,是否可以恢复XML行连接的过程
PS:我目前正在使用SQL Server 2014,我的爱好没有分类
用于创建测试表的代码
CREATE TABLE TestTable
([ID] INT, [Hobbies] varchar(MAX))
;
INSERT INTO TestTable
([ID], [Hobbies])
VALUES
(1, 'Swimming; Dancing; Zumba'),
(2, 'Swimming; Eating; Baseball'),
(3, 'Hockey; Polo; Fishing')
;
谢谢 这将扩展您的列表。然后,您可以轻松地添加一个组,并在该表单中输入您的爱好或真正做您喜欢做的事情
WITH CTE_XML
AS
(
SELECT ID,
xml_hobbies = CAST('<t>' + REPLACE(hobbies,'; ','</t><t>') + '</t>' AS XML)
FROM testTable
)
SELECT ID,
hobby = t.value('.','VARCHAR(MAX)')
FROM CTE_XML
CROSS APPLY xml_hobbies.nodes('t') CA(t)
请查3NF。。。。
ID hobby
----------- -------------
1 Swimming
1 Dancing
1 Zumba
2 Swimming
2 Eating
2 Baseball
3 Hockey
3 Polo
3 Fishing