SQL文本比较 - 处理多个撇号类型

时间:2015-12-14 15:02:04

标签: sql sql-server

我正在尝试编写一些代码来搜索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))

(这不可扩展,读起来很可怕)

1 个答案:

答案 0 :(得分:1)

标准做法是创建一个标准化的"删除复数的可搜索数据的版本,标点化或删除标点符号。

SQL Server通过"全文搜索"提供此功能和其他搜索功能。特征。要使用FTS,您需要对其进行设置并启用它,默认情况下不启用它。

如果您不需要FTS的所有功能,也可以自己动手。根据您的要求,这可能是也可能不值得。