Sql Server CONTAINS函数对某些url数据不起作用



在我的Sql Server数据库中,我有一个包含nvarchar(4000)的表字段数据结构.在这个表中,我有2条记录,在DataStructure字段中有以下数据:

Record 1:
{"FileName":"ACO23004000","SourceUrl":"http://mysite/TEST.TIF"}
Record 2:
{"FileName":"ACO23004000","SourceUrl":"http://mysite.fm/TEST.TIF"}

我尝试搜索值ACO23004000在SqlServer中使用Contains命令(全文搜索),如下所示:

Select *
from MyTable
where CONTAINS(DataStructure, '"*ACO23004000*"')

查询只返回第一个记录,似乎".fm">

如何解决这个问题?是否有可能某些字符阻止CONTAINS命令正确工作?

您正在尝试对json格式的文本字段应用条件。使用OPENJSON操作符来抓取它,并对文件名施加相应的条件。

SELECT MyTable.*
FROM MyTable
CROSS APPLY OPENJSON(DataStructure) WITH(FileName VARCHAR(20) '$.FileName')
WHERE FileName = 'ACO23004000'

输出:

tbody> <<tr>
DataStructure
{"FileName"ACO23004000","SourceUrl":"http://mysite/TEST.TIF"}
{"FileName"ACO23004000","SourceUrl":"http://mysite.fm/TEST.TIF"}

最新更新