使用LIKE或类似的完整搜索操作搜索XML

P.B*_*key 23 xml sql xpath sql-server-2008-r2

我想搜索XML值列以查看是否包含字符串.我不知道架构,我想知道字符串是否包含在任何地方.我不知道XPATH是否适用于这种情况.

相当于

Select s.Name, ts.ValueXML from table t (nolock) 
join table2 ts (nolock) on t.key_Id = ts.key_Id
join table3 s (nolock) on ts.key_Id=s.key_Id
where s.Name like '%Lab%' and ts.ValueXML  like '%PreviewDateRange%'
Run Code Online (Sandbox Code Playgroud)

错误:参数数据类型xml对于类似函数的参数1无效.

相关ts表格栏目

ValueXml (XML(.), null)

我正在搜索的项目应该是一个属性.因此,如果上述情况不可能,则包含该属性的任何内容都将是一个不错的选择.

das*_*ght 49

最简单(但绝对不是最快的执行)方式是在将列传递给nvarchar(max)之前将其转换为like:

cast(ValueXml as nvarchar(max)) like '%PreviewDateRange%'
Run Code Online (Sandbox Code Playgroud)