我有这个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。
答案 0 :(得分:2)
DECLARE @xml XML = '
<Columns>
<Column name="Id" condition=">" value="20" />
<Column name="salary" condition="<" 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