在SQL Server XML数据类型上使用LIKE语句

前端之家收集整理的这篇文章主要介绍了在SQL Server XML数据类型上使用LIKE语句前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如果您有一个varchar字段,您可以轻松地执行SELECT * FROM TABLE WHERE ColumnA LIKE’%Test%’以查看该列是否包含某个字符串. @H_301_2@你如何为XML Type做到这一点?

@H_301_2@我有以下内容,只返回具有“文本”节点但我需要在该节点内搜索的行

select * from WebPageContent where data.exist('/PageContent/Text') = 1

解决方法

你应该可以很容易地做到这一点:
SELECT * 
FROM WebPageContent 
WHERE data.value('(/PageContent/Text)[1]','varchar(100)') LIKE 'XYZ%'
@H_301_2@.value方法为您提供实际值,您可以定义要作为VARCHAR()返回的值,然后可以使用LIKE语句进行检查.

@H_301_2@请注意,这不会非常快.因此,如果您的XML中有某些字段需要进行大量检查,则可以:

@H_301_2@>创建一个存储函数,它获取XML并返回您正在寻找的值作为VARCHAR()
>在您的表上定义一个新的计算字段,该字段调用函数,并使其成为PERSISTED列

@H_301_2@有了这个,你基本上将XML的某个部分“提取”到一个计算字段中,使其保持不变,然后你可以非常有效地搜索它(哎呀:你甚至可以INDEX那个字段!).

@H_301_2@渣子

原文链接:https://www.f2er.com/mssql/84162.html

猜你在找的MsSQL相关文章