如何在SQL Server中搜索文本而忽略特殊字符?
我需要在一个名为Description的文本字段中搜索,该字段带有特殊字符:ñ,á,ó 例:Description=La canción tiene buen ritmo 我可以搜索“cancion”或“canción”,需要返回此行 所以,我做到了: 替换此特殊字符的函数。 选择用于在表中搜索的选项:如何在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 )
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子句都意味着不能使用索引,因此在速度方面可能不会有多大帮助。您可能需要考虑为此设置全文索引
你需要建立全文目录