2010-07-18 105 views
4

如果我嘗試創建一個選擇具有特殊(北歐)字符,如:SQL LIKE有特殊字符

Select * from users where name like '%æ%' 

它只是選擇所有用戶,而不是包含字母「æ」的。

我是否需要在數據庫中安裝一些特殊的驅動程序,或者是否有其他我錯過的東西?

更新:
我使用的是SQL Server 2008數據庫,排序規則設置爲「SQL_Latin1_General_CP1_CI_AS」和數據字段是一個可空nvarchar的數據類型。

+2

你正在使用什麼樣的SQL? – kennytm 2010-07-18 08:44:32

+1

什麼樣的數據類型是名字?什麼排序呢? – gbn 2010-07-18 08:50:28

+0

抱歉,現在應該更新所需的信息。 – Dofs 2010-07-18 09:10:47

回答

4

最有可能的一些整理或數據類型問題

爲例,介紹了97和230

SELECT ASCII('æ' COLLATE Albanian_CI_AI), ASCII('æ' COLLATE Latin1_General_CI_AS) 

我們需要更多信息基本上。

編輯:Question about Danish/Norwegian å(雖然未解決)

編輯2:修改代碼,這一點,如果名稱類型爲nvarchar所以文字變得過於unicode的。

Select * from users where name like N'%æ%' 
0

確保你使用的是擴展字符集(UTF-8),你應該沒問題。

0

它應該是能正常工作..
但嘗試這個Select * from users where name like '%[æ]%'

+0

它的工作原理,但我不能手動轉義變量,因爲它是一個搜索輸入。 – Dofs 2010-07-18 09:01:34

+0

我使用NHibernate,它使用搜索輸入的參數,所以它應該對sql注入。 – Dofs 2010-07-18 09:11:50