循环XML节点并在SQL Server中连接

时间:2015-11-30 13:38:59

标签: sql-server xml

我有这个XML结构,我必须解析它到SQL Server并创建一个Where条件:

<Columns>
    <Column name='Id' condition=' > ' value='20'>
    <Column name='salary' condition=' < ' value= 20000>
</Columns>

列节点数可以变化2,3,4等。

输出应该是:

Id > 20 and salary < 20000

为此,我必须循环列节点并将单个where字符串中的属性连接起来。

使用以下文章我可以阅读XML: http://blog.sqlauthority.com/2009/02/13/sql-server-simple-example-of-reading-xml-file-using-t-sql/

我的主要挑战是以有效的方式阅读XML。

1 个答案:

答案 0 :(得分:2)

DECLARE @xml XML = '
<Columns>
    <Column name="Id" condition="&gt;" value="20" />
    <Column name="salary" condition="&lt;" value="20000" />
</Columns>'

SELECT STUFF((
    SELECT ' AND [' + t.c.value('@name', 'SYSNAME') + '] ' + 
        t.c.value('@condition', 'SYSNAME') + ' ' + 
        t.c.value('@value', 'SYSNAME')
    FROM @xml.nodes('Columns/Column') t(c)
    FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 5, '')

结果 -

[Id] > 20 AND [salary] < 20000