在SQL Server 2008 R2中,
考虑以下xml
DECLARE @xml xml = '<data><fr>Chambre standard</fr><en>Standard room</en></data>';
如何返回以下字符串:
Chambre standard Standard room
目前,我只能通过使用
返回连接在一起而没有任何空格的字符串SELECT @xml.query('//*/text()').value('.', 'varchar(max)')
返回
Chambre standardStandard room
但我需要在那里插入一个空格。
如何在节点文本之间插入空格?
答案 0 :(得分:2)
您可以使用.nodes()
来粉碎XML。
select T.N.value('local-name(.)', 'varchar(128)') as Name,
T.N.value('.', 'varchar(max)') as Value
from @xml.nodes('/data/*') as T(N);
结果:
Name Value
fr Chambre standard
en Standard room
然后您可以使用for xml path('')
将其重新组合在一起。
select stuff((select ' '+T.N.value('.', 'varchar(max)')
from @xml.nodes('/data/*') as T(N)
for xml path(''), type).value('.', 'varchar(max)'), 1, 1, '')
结果:
(No column name)
Chambre standard Standard room