在XML文件中选择多个值,并使用xQuery将它们连接起来

时间:2014-05-31 17:58:04

标签: sql xml select concatenation xquery

我有以下XML:

<items>
 <item value="1"/>
 <item value="2"/>
 <item value="4"/>
</items>

我想选择所有项目值并将它们连接起来 - 见下文 - 使用XQuery:

1.2.4

有什么想法吗? 提前谢谢。

2 个答案:

答案 0 :(得分:1)

您的问题分为两部分:

  1. 从xml中获取值
  2. 将多个值连接在一起
  3. 问题的第二部分在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小提琴中,您可以在此处访问和播放:http://sqlfiddle.com/#!6/d41d8/18144/0

答案 1 :(得分:1)

使用XQuery,您只需使用XPath选择值,然后使用点将它们连接在一起。

string-join(/items/item/@value, '.')