我正在尝试编写一些代码来搜索varchar字段并根据SQL Server(2008 +)中的部分/完整输入匹配来匹配结果
我们正在搜索的列是一个NVARCHAR列,因此支持多种撇号和引号。这些包括但不限于:
同样,需要考虑各种双引号......
用户可以输入任何单引号,我想返回包含该单个字符的任何变体的结果,并且双引号也是如此。
就像 _CI 排序规则会在搜索“e”时返回“e”或“E”的结果,而 _AI 排序规则会返回à或者结果ä在搜索“a”时,是否存在会忽略引号变化的整理?
目前的解决方法是:
WHERE my_field LIKE REPLACE( REPLACE( REPLACE( REPLACE( search_term, CHAR(145), CHAR(39)), CHAR(146), CHAR(39)), CHAR(147), CHAR(34)), CHAR(148), CHAR(34))
(这不可扩展,读起来很可怕)
答案 0 :(得分:1)
标准做法是创建一个标准化的"删除复数的可搜索数据的版本,标点化或删除标点符号。
SQL Server通过"全文搜索"提供此功能和其他搜索功能。特征。要使用FTS,您需要对其进行设置并启用它,默认情况下不启用它。
如果您不需要FTS的所有功能,也可以自己动手。根据您的要求,这可能是也可能不值得。