我正在执行MS SQL Server全文搜索查询。我需要对特殊字符进行转义,以便可以搜索包含特殊字符的特定术语。有没有内置的函数来转义全文搜索字符串?如果没有,你会怎么做?
发布于 2009-08-05 15:04:29
坏消息是:没有办法。好消息是:你不需要它(因为它不会有任何帮助)。
我在我的一个项目中遇到过类似的问题。我的理解是,在构建全文索引时,SQL Server将所有特殊字符视为单词分隔符,因此:
假设我们有一个带有对应全文索引的下表(已跳过):
CREATE TABLE [dbo].[ActicleTable]
(
[Id] int identity(1,1) not null primary key,
[ActicleBody] varchar(max) not null
);稍后,我们将向表中添加行:
INSERT INTO [ActicleTable] values ('digitally improvements folders')
INSERT INTO [ActicleTable] values ('digital"ly improve{ments} fold(ers)')尝试搜索:
SELECT * FROM [ArticleTable] WHERE CONTAINS(*, 'digitally')
SELECT * FROM [ArticleTable] WHERE CONTAINS(*, 'improvements')
SELECT * FROM [ArticleTable] WHERE CONTAINS(*, 'folders')和
SELECT * FROM [ArticleTable] WHERE CONTAINS(*, 'digital')
SELECT * FROM [ArticleTable] WHERE CONTAINS(*, 'improve')
SELECT * FROM [ArticleTable] WHERE CONTAINS(*, 'fold')第一组条件将匹配第一行(而不是第二行),而第二组将仅匹配第二行。
不幸的是,我找不到MSDN (或其他东西)的链接,其中清楚地说明了这种行为。但是我发现了一个official article,它告诉如何转换全文搜索查询的引号,它隐式地与上面描述的算法对齐。
https://stackoverflow.com/questions/995478
复制相似问题