【发布时间】:2014-07-21 07:47:20
【问题描述】:
我有以下 XML:
<items>
<item value="1"/>
<item value="2"/>
<item value="4"/>
</items>
我想选择所有项目值并像这样连接它们 - 见下文 - 使用 XQuery :
1.2.4
有什么想法吗? 提前致谢。
【问题讨论】:
标签: sql xml select concatenation xquery
我有以下 XML:
<items>
<item value="1"/>
<item value="2"/>
<item value="4"/>
</items>
我想选择所有项目值并像这样连接它们 - 见下文 - 使用 XQuery :
1.2.4
有什么想法吗? 提前致谢。
【问题讨论】:
标签: sql xml select concatenation xquery
使用 XQuery,您可以简单地使用 XPath 选择值并使用点将它们连接在一起。
string-join(/items/item/@value, '.')
【讨论】:
您的问题分为两部分:
this question. 的答案很好地涵盖了您问题的第二部分
要从 xml 中获取值,请尝试以下操作:
-- Your xml variable
DECLARE @xml AS XML = '<items>
<item value="1"/>
<item value="2"/>
<item value="4"/>
</items>'
-- Example of selecting the values into rows
SELECT
item.value('.', 'int')
FROM
@xml.nodes('/items/item/@value') as T1(item)
-- Use your favourite/'best for your circumstance' method of
-- concatenating the rows into one string
-- see https://stackoverflow.com/q/194852/1208914 for other ways
SELECT
item.value('.', 'varchar(50)') + ' ' as 'data()'
FROM
@xml.nodes('/items/item/@value') as T1(item)
for xml path('')
我已将上面的代码放入一个 sql fiddle 中,您可以在此处访问和使用它:http://sqlfiddle.com/#!6/d41d8/18144/0
【讨论】: