首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL Server全文搜索转义字符?

SQL Server全文搜索转义字符?
EN

Stack Overflow用户
提问于 2009-06-15 10:50:04
回答 1查看 21.2K关注 0票数 19

我正在执行MS SQL Server全文搜索查询。我需要对特殊字符进行转义,以便可以搜索包含特殊字符的特定术语。有没有内置的函数来转义全文搜索字符串?如果没有,你会怎么做?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-08-05 15:04:29

坏消息是:没有办法。好消息是:你不需要它(因为它不会有任何帮助)。

我在我的一个项目中遇到过类似的问题。我的理解是,在构建全文索引时,SQL Server将所有特殊字符视为单词分隔符,因此:

  1. 包含此类字符的单词在全文索引中表示为两个(或更多)单词。
  2. 这些字符将被剥离,不会出现在索引中。

假设我们有一个带有对应全文索引的下表(已跳过):

代码语言:javascript
复制
CREATE TABLE [dbo].[ActicleTable] 
(
  [Id] int identity(1,1) not null primary key,
  [ActicleBody] varchar(max) not null
);

稍后,我们将向表中添加行:

代码语言:javascript
复制
INSERT INTO [ActicleTable] values ('digitally improvements folders')
INSERT INTO [ActicleTable] values ('digital"ly improve{ments} fold(ers)')

尝试搜索:

代码语言:javascript
复制
SELECT * FROM [ArticleTable] WHERE CONTAINS(*, 'digitally')
SELECT * FROM [ArticleTable] WHERE CONTAINS(*, 'improvements')
SELECT * FROM [ArticleTable] WHERE CONTAINS(*, 'folders')

代码语言:javascript
复制
SELECT * FROM [ArticleTable] WHERE CONTAINS(*, 'digital')
SELECT * FROM [ArticleTable] WHERE CONTAINS(*, 'improve')
SELECT * FROM [ArticleTable] WHERE CONTAINS(*, 'fold')

第一组条件将匹配第一行(而不是第二行),而第二组将仅匹配第二行。

不幸的是,我找不到MSDN (或其他东西)的链接,其中清楚地说明了这种行为。但是我发现了一个official article,它告诉如何转换全文搜索查询的引号,它隐式地与上面描述的算法对齐。

票数 28
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/995478

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档