Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 子字符串用逗号分隔的一列值,使值位于不同的列中_Sql_Sql Server_Tsql_Sql Server 2016 - Fatal编程技术网

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

我有一个由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(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你应该给它贴上标签。