Sql server SQL SERVER:连接XML列的节点值
下表中有一列是XML格式的: 身份证件 标签 细节 1 测试1Sql server SQL SERVER:连接XML列的节点值,sql-server,xml,concatenation,stuff,Sql Server,Xml,Concatenation,Stuff,下表中有一列是XML格式的: 身份证件 标签 细节 1 测试1 email11@foo.comemail12@foo.comblabla 2 测试2 email21@foo.comemail22@foo.comblabla 请尝试以下解决方案 因为没有提供DDL和样本数据填充, 假设Details列是XML数据类型 SQL -- DDL and sample data population, start DECLARE @tbl TABLE (ID INT IDENTITY PRIMARY KE
email11@foo.comemail12@foo.comblabla
2
测试2
email21@foo.comemail22@foo.comblabla
请尝试以下解决方案 因为没有提供DDL和样本数据填充, 假设Details列是XML数据类型 SQL
-- DDL and sample data population, start
DECLARE @tbl TABLE (ID INT IDENTITY PRIMARY KEY, Label VARCHAR(20), Details XML);
INSERT INTO @tbl (Label, Details) VALUES
('Test1',N'<terms><destination><email>email11@foo.com</email><email>email12@foo.com</email></destination><content>blabla</content></terms>'),
('Test2',N'<terms><destination><email>email21@foo.com</email><email>email22@foo.com</email></destination><content>blabla</content></terms>');
-- DDL and sample data population, end
SELECT ID, Label
, REPLACE(Details.query('data(/terms/destination/email/text())').value('.','VARCHAR(MAX)'), SPACE(1), ', ') AS Destination
FROM @tbl;
+----+-------+----------------------------------+
| ID | Label | Destination |
+----+-------+----------------------------------+
| 1 | Test1 | email11@foo.com, email12@foo.com |
| 2 | Test2 | email21@foo.com, email22@foo.com |
+----+-------+----------------------------------+
select ID, Label,
stuff(
details.query('for $step in /terms/destination/email/text() return concat(", ", string($step))')
.value('.', 'nvarchar(max)'),
1, 2, '')
from @tbl;