【发布时间】:2015-09-17 08:38:00
【问题描述】:
我得到了一个数据库来管理,该数据库配置为全文搜索。不幸的是,我在这方面的经验有限,并且出现了一个问题,这样的搜索“AT&T”会返回正确的搜索结果,但搜索“AT&”会返回包含“AT”而不是“在&”。
我推测这是因为“&”符号是一个特殊字符(?)
我的查询(正常工作)是:
SELECT TOP 1000 * FROM [DB_dev].[dbo].[Info] WHERE CONTAINS(Description, '"AT&T"')
只返回描述中包含“AT&T”的行。
我遇到的问题是:
SELECT TOP 1000 * FROM [DB_dev].[dbo].[Info] WHERE CONTAINS(Description, '"AT&"')
返回包含“AT”描述的任何行。
注意:我正在使用 SQL Server 2014 并尝试使用以下内容进行转义:
SELECT TOP 1000 * FROM [DB_dev].[dbo].[Info] WHERE CONTAINS(Description, '"AT&&"')
SELECT TOP 1000 * FROM [DB_dev].[dbo].[Info] WHERE CONTAINS(Description, '"AT%&"')
SELECT TOP 1000 * FROM [DB_dev].[dbo].[Info] WHERE CONTAINS(Description, '"AT\&"')
SELECT TOP 1000 * FROM [DB_dev].[dbo].[Info] WHERE CONTAINS(Description, '"AT[&]"')
这些都不起作用(找到“A&”)。
【问题讨论】:
-
您使用的是什么 dbms,最后一条语句的期望输出是什么?
-
抱歉,我应该说 - SQL Server 2014
标签: sql tsql escaping full-text-search special-characters