本演示,是把这篇:http://www.cnblogs.com/insus/archive/2012/02/29/2374826.html 改为动态的T-SQL。
宣告三个变量,第一个为@nodes :
第二个为@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% '''
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
Exec执行得到的结果: