MS SQL 包含与 & 符号搜索
Posted
技术标签:
【中文标题】MS SQL 包含与 & 符号搜索【英文标题】:MS SQL CONTAINS with Ampersand Search 【发布时间】:2016-12-03 05:31:41 【问题描述】:我有一个名为“名称”的 FULLTEXT 列,每行可能包含多个单词。使用 CONTAINS,我可以搜索可变数量的单词,并且它可以工作,除非其中一个单词包含 & 符号。
示例:名称 = 'Bob Brown AB&CD' 这有效:
CONTAINS(name, '"*Bo*" AND "*Br*"')
这些不(用&符号搜索单词):
CONTAINS(name, '"*AB*"')
CONTAINS(name,'"*AB&CD*"')
CONTAINS(name,'"*&*"')
我知道为什么最后一次搜索不起作用,因为 CONTAINS 只从单词的开头搜索。
FULLTEXT 是否将 & 符号作为分词符处理?如果是这样,这可能解释了为什么包含 & 符号的搜索会失败。但它无法解释原因
CONTAINS(name, '"*AB*"')
CONTAINS(name, '"*CD*"') (assuming FULLTEXT sees "CD" as a different word)
会失败。
如果我搜索“AB&CD”或仅搜索“AB”或仅搜索“CD”,如何减轻搜索以返回该行?
附:动态 SQL 不是一个选项,因此我无法连接可变数量的 LIKE。
【问题讨论】:
【参考方案1】:显然,我找到了答案。我设置了
STOPLIST = OFF
在我的 FULLTEXT 索引上,我现在可以通过“AB”和“AB&CD”成功搜索。
【讨论】:
以上是关于MS SQL 包含与 & 符号搜索的主要内容,如果未能解决你的问题,请参考以下文章