注意:我正在使用SQL的全文本搜索功能,CONTAINS子句以及所有-*是全文本的通配符,%仅用于LIKE子句。
我现在已经在多个地方阅读过,MS SQL不支持“前导通配符”搜索(例如,使用“ * overflow”匹配“ stackoverflow”)。我正在考虑使用CLR函数添加正则表达式匹配,但我很想知道人们可能还有其他解决方案。
更多信息:您只能在单词或短语的末尾添加星号。-以及我的经验:匹配“ myvalue”时,“ my *”有效,但是执行以下查询时,“(星号)value”不返回匹配项:
SELECT * FROM TABLENAME WHERE CONTAINS(TextColumn, '"*searchterm"');
因此,我需要一种解决方法。我只在网站上的实际搜索页面上使用搜索-因此它的工作方式基本上与Google的工作方式相同(在Joe Sixpack类型的用户看来)。几乎没有那么复杂,但是这种匹配确实不应该失败。
解决方法仅适用于前导通配符:
将反转的文本存储在其他字段(或实体化视图)中 在此列上创建全文索引 查找带有*的反向文本
SELECT *
FROM TABLENAME
WHERE CONTAINS(TextColumnREV, '"mrethcraes*"');
当然,有很多缺点,只是为了快速解决...
更不用说CONTAINSTABLE了...
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。