MSSQL空间不敏感搜索

时间:2015-10-30 08:11:04

标签: sql-server case-insensitive accent-insensitive

如何在SQL Server中进行空间不敏感搜索?

例如,这些城市名称应该被视为相同:

San Remo
Sanremo

我知道如何进行简单的不区分大小写和不区分重音的搜索,但我没有发现对空间不敏感的搜索。

我可以使用整理或功能吗?或者我应该在我的代码中预处理城市名称?

2 个答案:

答案 0 :(得分:2)

创建一个新的计算PERSISTED列。这将允许创建索引。即使没有索引,这也会比直接替换列的性能好得多:

ALTER TABLE dbo.YourTable 
ADD ComputedCol AS REPLACE(YourColumn, ' ', '') PERSISTED 

答案 1 :(得分:0)

您可以搜索

REPLACE (column_name, ' ', '') like '%yourCriteria%

而不仅仅是

column_name like '%yourCriteria%

我建议反对它,因为文本搜索更耗费资源。 一个更好的选择是添加一个包含替换文本的新列,将其编入索引并在其上进行搜索。