我有一个名为“tags”的
XML数据类型列.
在那,我正在存储一个集合,如下所示:
<ArrayOfString> <string>personal</string> <string>travel</string> <string>gadgets</string> <string>parenting</string> </ArrayOfString>
我想选择所有具有我正在寻找的值的行:例如,我想选择表中具有“travel”标签的所有行.
我知道这是有效的,如果我知道我正在寻找的值的索引:
select * from posts where tags.value('(/ArrayOfString/string)[1]','nvarchar(1000)') = 'travel'
解决方法
select * from tags where tags.exist('/ArrayOfString/string[. = "travel"]') = 1
或者像这样,如果你想检查一个变量.
declare @Val varchar(10) set @Val = 'travel' select * from tags where tags.exist('/ArrayOfString/string[. = sql:variable("@Val")]') = 1