宣告三个变量,第一个为@nodes :
DECLARE @nodes NVARCHAR(MAX) = '''/Devs/lang/@name'''
第二个为@value:
DECLARE @value NVARCHAR(MAX) = '''(.)'',''NVARCHAR(MAX)'''
第三个为@sql,其实前两个变量也是为此变量所使用,查询LIKE的条件,本例中,也有所改变,即是查询所有值包含有".NET"。:
DECLARE @sql NVARCHAR(MAX) = 'SELECT
lang = L.n.value(' + @value +')
FROM @xml.nodes(' + @nodes +') L(n)
WHERE L.n.value(' + @value +') LIKE ''%.NET%'''
使用sp_executesql 执行第三个变量:
EXECUTE sp_executesql @sql, N'@xml xml', @xml = @xml