如何在SQL全文';包含';功能?

如何在SQL全文';包含';功能?,sql,sql-server,escaping,Sql,Sql Server,Escaping,如何在MS SQL“contains”函数中转义双引号字符 SELECT decision FROM table WHERE CONTAINS(decision, '34" AND wide') 通常情况下,contains()希望双引号包围要匹配的精确短语,但我希望搜索实际的双引号字符。我试着用\、`、甚至另一个双引号来逃避它,但这些都不起作用 另外,我意识到这样一个简单的例子也可以使用like语句来完成,但我需要使用全文搜索功能。出于示例目的,我在此处提供的查询已从实际查询中简化。来自:

如何在MS SQL“contains”函数中转义双引号字符

SELECT decision
FROM table 
WHERE CONTAINS(decision, '34" AND wide')
通常情况下,contains()希望双引号包围要匹配的精确短语,但我希望搜索实际的双引号字符。我试着用\、`、甚至另一个双引号来逃避它,但这些都不起作用

另外,我意识到这样一个简单的例子也可以使用like语句来完成,但我需要使用全文搜索功能。出于示例目的,我在此处提供的查询已从实际查询中简化。

来自:

标点符号被忽略。因此,
包含(测试,“计算机故障”)
将一行与值匹配,“我的计算机在哪里?找不到它将很昂贵。”

由于
FULLTEXT
甚至不为标点符号编制索引,因此需要使用
之类的
对结果进行精细筛选:

SELECT  decision
FROM    table 
WHERE   CONTAINS(decision, '34 AND wide')
        AND decision LIKE '%34"%'

这将保留全文的优点。

如果字符串是一位数字,则上述答案在SQL Server 2008中不起作用

这项工作:

SELECT  partdescription
FROM    table  
WHERE   CONTAINS(partdescription, '10') 
        AND decision LIKE '%10"%'
这不起作用:

SELECT  partdescription
FROM    table  
WHERE   CONTAINS(partdescription, '6') 
        AND decision LIKE '%6"%'' 
编辑:解释为什么单个数字不能被索引

如果正在使用系统停止字(或噪声字)列表,则它包含每个数字作为要忽略的字。您可以更改停止词列表的内容,也可以完全关闭停止词

 ALTER FULLTEXT INDEX ON dbo.my_ft_table SET STOPLIST = OFF;

一旦进行了其中一项更改,受影响的文本必须重新编制索引,然后才能搜索单个数字。重新编制索引后,确实可以搜索“6”。

OP已经看到的相关问题:我更新了解释,包括为什么单个数字会或不会编制索引。