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