【发布时间】:2018-07-08 03:29:39
【问题描述】:
我需要通过在 MS SQL 中使用全文搜索过滤特定文本来查找行。第一个要求是通过在 xml 列中搜索文本来查找行,第二个要求是通过在 json 列(nvarchar 数据类型)中搜索文本来查找行。以下条件应返回结果。
XML Column
Criteria 1. Where Contains(XMLData,"1")
Criteria 2. Where Contains(XMLData,"/1/")
Criteria 3. Where Contains(XMLData,"<field>1</field>")
JSONDATA Column :
Criteria 1. Where Contains(JSONData,"1")
Criteria 2. Where Contains(JSONData,"/1/")
Criteria 2. Where Contains(JSONData,"PortalId:1")
我目前的实现是使用下面的查询,它在运行数千条记录时会出现性能问题。除了下面的代码还有其他方法吗?
XML QUERY
SELECT *
WHERE cast(XMLData as nvarchar(max)) LIKE '%/' + CONVERT(VARCHAR,'1') +'/%'
JSON QUERY
SELECT *
WHERE JSONDataLIKE '%/' + CONVERT(VARCHAR,'1') +'/%'
这是此问题的示例表。
【问题讨论】:
-
从 v2016 开始,SQL-Server 中集成了 JSON 支持。你是哪个版本的?
-
嗨Shnugo-我正在使用SQL 2012。
标签: sql sql-server xml tsql sql-server-2012