【发布时间】:2015-12-14 15:02:04
【问题描述】:
我正在尝试编写一些代码来搜索 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))
(不可扩展且难以阅读)
【问题讨论】:
标签: sql sql-server