如何在SQL Server中搜索文本而忽略特殊字符?

如何在SQL Server中搜索文本而忽略特殊字符?,sql,sql-server,Sql,Sql Server,我需要在一个名为Description的文本字段中搜索,该字段带有特殊字符:ñ,á,ó 例:Description=La canción tiene buen ritmo 我可以搜索“cancion”或“canción”,需要返回此行 所以,我做到了: 替换此特殊字符的函数。 选择用于在表中搜索的选项: SELECT IdItem, Description FROM tblItemsTable WHERE dbo.fnReplaceSpecialChars ( Description )

我需要在一个名为Description的文本字段中搜索,该字段带有特殊字符:ñ,á,ó

例:Description=La canción tiene buen ritmo

我可以搜索“cancion”或“canción”,需要返回此行

所以,我做到了:

替换此特殊字符的函数。 选择用于在表中搜索的选项:

SELECT IdItem, Description
  FROM tblItemsTable
 WHERE dbo.fnReplaceSpecialChars ( Description ) LIKE '% word%'
    OR dbo.fnReplaceSpecialChars ( Description ) LIKE 'word%'
我的问题是这个搜索很慢

能否以更好/优化的方式完成


谢谢

可以使用不区分重音的排序规则名称containsAI,以避免使用函数

SELECT 1
WHERE 'cancion' LIKE '%canción%' COLLATE Latin1_General_100_CS_AI


SELECT 1
WHERE 'cancion' LIKE '%canción%' COLLATE Latin1_General_100_CS_AS
使用前导通配符和显式collate子句都意味着不能使用索引,因此在速度方面可能不会有多大帮助。您可能需要考虑为此设置全文索引


您需要构建全文目录

您可以使用不区分重音的排序规则名称containsAI,以避免使用您的函数

SELECT 1
WHERE 'cancion' LIKE '%canción%' COLLATE Latin1_General_100_CS_AI


SELECT 1
WHERE 'cancion' LIKE '%canción%' COLLATE Latin1_General_100_CS_AS
使用前导通配符和显式collate子句都意味着不能使用索引,因此在速度方面可能不会有多大帮助。您可能需要考虑为此设置全文索引

你需要建立全文目录