2010-08-12 73 views
9

我正在使用Sql server 2008 express版的網站搜索工作。在包含變音符號的字段上的sql搜索

「圖書」表,有一個名爲「標題」,其中有含羅馬尼亞語(拉丁)字母的標題字段。

好吧,如果用戶將喜歡的一句話:在搜索領域「卡薩」和我有一個標題像DB:「測試卡薩測試」我想表明的書,但:

select * from books where title like '%casa%' 

不會找到它...

你知道在做選擇時刪除變音符號的任何功能?

我知道我可以用sql server的全文搜索插件來解決這個問題,但是我想以一種更簡單的方式來實現。

回答

15
select * from books where title COLLATE Latin1_General_CI_AI like '%casa%' 

當然,你應該選擇符合你的排序規則......只是變化對AI的結束使「不區分重音」

與德國的變音符號簡單的例子

DECLARE @foo TABLE (bar varchar(100) /*implied COLLATE Latin1_General_CI_AS*/) 

INSERT @foo VALUES ('xxx fish yyy') 
INSERT @foo VALUES ('xxx bar yyy') 
INSERT @foo VALUES ('xxx bär yyy') 

select * from @foo where bar COLLATE Latin1_General_CI_AI like '%bar%' 
select * from @foo where bar like '%bar%' 
+0

我想你救了我的一天! – 2010-08-12 15:52:47

+1

另外,如果您始終希望搜索不區分變音,則可以更改數據庫的歸類。 – 2010-08-12 15:54:40

+0

還有一個問題:你是否也知道如何在linq中做到這一點?非常感謝! – 2010-08-12 15:59:01

5

您需要使用不區分變音的分頁子句。

0

如果您需要做的是在LINQ,我認爲你必須先刪除搜索字符串中變音符號,然後做一個LINQ查詢...它應該工作...

相關問題