【发布时间】:2011-07-23 14:12:18
【问题描述】:
有人有一个只匹配整个单词的LIKE 模式吗?
它需要将空格、标点符号和字符串的开头/结尾作为单词边界。
我没有使用 SQL 全文搜索,因为它不可用。当LIKE 应该能够做到这一点时,我认为没有必要进行简单的关键字搜索。但是,如果有人针对LIKE 模式测试了全文搜索的性能,我很想听听。
编辑:
我到了这个阶段,但它不匹配字符串的开始/结束作为单词边界。
where DealTitle like '%[^a-zA-Z]pit[^a-zA-Z]%'
我希望它匹配句子或单个单词中的“pit”而不是“spit”。
例如DealTitle 可能包含“绝望的坑”或“坑你的智慧”或“坑”或“坑”。或“坑!”或者只是“坑”。
【问题讨论】:
-
如果你不知道如何做你需要做的事情,你怎么能说 LIKE 应该能够做到这一点?
-
您应该为此使用全文搜索。如果它真的不可用(为什么不可用?它甚至带有 Express 和 Advanced Services)CLR 和正则表达式将比
LIKE更合适 -
为什么全文搜索比 LIKE 更好。它更快吗?还是您认为 LIKE 无法完成整个单词?
-
全文搜索带有一个分词器,可以将文本分开并预先索引它们。
LIKE带有前导通配符将始终涉及对所有数据的全面扫描。 -
即使在一个句子中,像“pit5”或“3pit”这样的情况呢? '%[^a-z]pit[^a-z]%' 会允许它们,看来你不是故意的。
标签: sql sql-server