2011-09-20 126 views
1

我需要在具有特殊字符的文本字段(名爲Description)中搜索:ñ,á,ó...如何在SQL Server中搜索文本忽略特殊字符?

例如:Description =「Lacancióntiene buen ritmo !!!」

我可以搜索'cancion'或'canción',並且需要返回此行。

所以,我所做的:

  1. 是替換此特殊字符的功能。
  2. 一個選擇使用它在表中搜索:

    SELECT IdItem, Description 
        FROM tblItemsTable 
    WHERE dbo.fnReplaceSpecialChars (Description) LIKE '% word%' 
        OR dbo.fnReplaceSpecialChars (Description) LIKE 'word%' 
    

我的問題是這樣的搜索是很慢的......

它可以在一個更好的/優化的方式來完成?

謝謝!

回答

3

您可以使用不區分重音的排序規則(名稱包含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 

兩者都使用的領先的外卡,而在明確勘條款意味着指數不能這麼用如果在速度方面,可能無濟於事。您可能需要考慮爲此設置全文索引。

您需要製作全文目錄WITH ACCENT_SENSITIVITY =OFF