Sql 子字符串用逗号分隔的一列值,使值位于不同的列中
我有一个由SQL查询返回的列 以上是列结果,我需要将逗号的值分隔为不同的列。尝试以下操作:Sql 子字符串用逗号分隔的一列值,使值位于不同的列中,sql,sql-server,tsql,sql-server-2016,Sql,Sql Server,Tsql,Sql Server 2016,我有一个由SQL查询返回的列 以上是列结果,我需要将逗号的值分隔为不同的列。尝试以下操作: SELECT s.PET_NAME FROM Table1 CROSS APPLY STRING_SPLIT(PET_NAME, ',') s(PET_NAME); 例如,通过xml: -- split to columns select ltrim(rtrim(t.x.value('(x)[1]', 'varchar(20)'))) as pet1, ltrim(rtri
SELECT s.PET_NAME
FROM Table1 CROSS APPLY
STRING_SPLIT(PET_NAME, ',') s(PET_NAME);
例如,通过xml:
-- split to columns
select
ltrim(rtrim(t.x.value('(x)[1]', 'varchar(20)'))) as pet1,
ltrim(rtrim(t.x.value('(x)[2]', 'varchar(20)'))) as pet2,
ltrim(rtrim(t.x.value('(x)[3]', 'varchar(20)'))) as pet3,
ltrim(rtrim(t.x.value('(x)[4]', 'varchar(20)'))) as pet4,
ltrim(rtrim(t.x.value('(x)[5]', 'varchar(20)'))) as pet5
from (
select cast(('<x>'+replace(pet_name, ',','</x><x>')+'</x>') as xml) x
from YourTable) t (x)
例如,可以使用substring函数,但它更复杂,因为可能列的计数不确定。对于即席分析,最好的工具是文本编辑器,例如excel功能区数据/文本到列
对于拆分为列,您不能使用STRING\u SPLIT,它将拆分为行。此问题已在其他问题中详细讨论过。在发布之前,你有没有对此做过任何研究?这可能是重复的原因吗?人们在投票前没有阅读答案吗?嗨,有什么问题吗。请解释几个问题:1。您正在使用内置的string_split函数,但该函数仅在2016年版本中引入。如果OP使用的是旧版本怎么办?您不知道,因为问题缺少版本标签。2.您正在对字符串拆分函数使用交叉应用,但没有从其结果中进行选择。3.OP在单独的列中请求结果,字符串_拆分只能执行单独的行。我使用2016 sqlserver@DENNISKITHINJI你应该给它贴上标签。