我需要在一个包含特殊字符的文本字段(名为Description)的表中搜索:ñ,á,ó......
Ex:Description =“Lacancióntienebuen ritmo !!!”
我可以搜索'cancion'或'canción',这行需要返回。
所以,我做了:
使用它在表格中搜索的选择:
SELECT IdItem, Description
FROM tblItemsTable
WHERE dbo.fnReplaceSpecialChars ( Description ) LIKE '% word%'
OR dbo.fnReplaceSpecialChars ( Description ) LIKE 'word%'
我的问题是搜索速度很慢......
可以以更好/优化的方式完成吗?
谢谢!
答案 0 :(得分:4)
您可以使用重音不敏感的排序规则(名称包含AI
)以避免使用您的功能
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子句都意味着无法使用索引,因此在速度方面可能没有多大帮助。您可能需要考虑为此设置全文索引。
您需要构建全文目录WITH ACCENT_SENSITIVITY =OFF