Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.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

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_Sql Server 2008 - Fatal编程技术网

Sql 将列值拆分为行并保留第二列的值

Sql 将列值拆分为行并保留第二列的值,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我的一张桌子有问题,我打算在viz工具中使用它。也许你可以指导我如何实现以下目标 我的桌子看起来像这样: 123 | ABC DEF 456 | GHI JKL MNO 789 | PRS 我想将第二列拆分为行,并保留第一列的值: 123 | ABC 123 | DEF 456 | GHI 456 | JKL 456 | MNO 789 | PRS 你能告诉我如何做到这一点吗? 提前谢谢。干杯 您可以使用XML节点方法分割数据: SELECT ID, split.a.value('.',

我的一张桌子有问题,我打算在viz工具中使用它。也许你可以指导我如何实现以下目标

我的桌子看起来像这样:

123 | ABC DEF
456 | GHI JKL MNO
789 | PRS
我想将第二列拆分为行,并保留第一列的值:

123 | ABC
123 | DEF
456 | GHI
456 | JKL 
456 | MNO
789 | PRS
你能告诉我如何做到这一点吗?
提前谢谢。干杯

您可以使用
XML
节点方法分割数据:

SELECT ID, split.a.value('.', 'VARCHAR(MAX)') DATA
FROM
(
   SELECT ID, CAST('<A>'+REPLACE(DATA, ' ','</A><A>')+'</A>' AS XML) AS data from <table_name>
) a
CROSS APPLY data.nodes('/A') AS split(a);

您可以使用
XML
节点方法拆分数据:

SELECT ID, split.a.value('.', 'VARCHAR(MAX)') DATA
FROM
(
   SELECT ID, CAST('<A>'+REPLACE(DATA, ' ','</A><A>')+'</A>' AS XML) AS data from <table_name>
) a
CROSS APPLY data.nodes('/A') AS split(a);

谷歌:“SQL Server拆分字符串”什么版本的SQL Server?最新版本(和Azure SQL DB)中有一些内置函数可以处理这个问题。嗨,Vinnie,刚刚添加了额外的标记。现在是2008年。可能会重复从未存储过的数据。这只会给你带来很多麻烦。谷歌:“SQLServer拆分字符串”什么版本的SQLServer?最新版本(和Azure SQL DB)中有一些内置函数可以处理这个问题。嗨,Vinnie,刚刚添加了额外的标记。现在是2008年。可能会重复从未存储过的数据。这只会给你带来很多麻烦,效果很好。谢谢,很好用。非常感谢。