Sql server 2008 如何返回xml值的text(),在节点值之间留有空格?
在SQL Server 2008 R2中 考虑以下xmlSql server 2008 如何返回xml值的text(),在节点值之间留有空格?,sql-server-2008,xquery,Sql Server 2008,Xquery,在SQL Server 2008 R2中 考虑以下xml DECLARE @xml xml = '<data><fr>Chambre standard</fr><en>Standard room</en></data>'; 目前,我只能使用 SELECT @xml.query('//*/text()').value('.', 'varchar(max)') 哪个回报 Chambre standardStandard ro
DECLARE @xml xml = '<data><fr>Chambre standard</fr><en>Standard room</en></data>';
目前,我只能使用
SELECT @xml.query('//*/text()').value('.', 'varchar(max)')
哪个回报
Chambre standardStandard room
但我需要在里面插入一个空格
如何在节点文本之间插入空格?您可以使用.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
(No column name)
Chambre standard Standard room
然后您可以对xml路径(“”)使用
将其重新组合在一起
select stuff((select ' '+T.N.value('.', 'varchar(max)')
from @xml.nodes('/data/*') as T(N)
for xml path(''), type).value('.', 'varchar(max)'), 1, 1, '')
结果:
Name Value
fr Chambre standard
en Standard room
(No column name)
Chambre standard Standard room
除了just和之外,元素还会有其他元素吗?实际上可能不仅仅是fr和en(更多的语言),但您的解决方案暂时可以工作。我已经用我认为是改进的临时解决方案修改了代码。是否有在线文档更详细地解释“本地名称”?