2009-08-12 58 views
0

我的數據庫中有一些內容(用於我們的語言)'奇怪'字符。字符串與SqlServer中的'奇怪字符'比較

例如:

Å 

當使用SQL Server中的like聲明字母A,這不返回的結果,因爲Å不是A

SqlServer有沒有辦法將Å作爲E(而é作爲'e'等)?

回答

4

你的意思是「Åas A」或「Åas E」?

對於第一個,你可以強制排序規則不區分重音

SELECT 1 WHERE 'Å' = 'A' --No 
SELECT 1 WHERE 'Å' COLLATE LATIN1_General_CI_AI = 'A' --Yes 

SELECT 1 WHERE 'é' = 'e' --No 
SELECT 1 WHERE 'é' COLLATE LATIN1_General_CI_AI = 'e' --Yes 
+0

謝謝,這是有效的。 你有任何想法,如果這也可能在Linq實體? – Michel 2009-08-12 11:41:02

+0

不客氣。對不起,我沒有。 – gbn 2009-08-12 11:55:17

+0

也沒有發現,用你的代碼創建了一個SP。很棒。 – Michel 2009-08-27 09:21:13

2

您可以在您的查詢COLLATE子句指定口音大小寫排序:

SELECT * 
FROM your_table 
WHERE your_column LIKE 'A%' COLLATE Latin1_General_CI_AI 

你需要爲您的語言使用適當的排序規則。內置fn_helpcollations函數將給你一個所有支持的排序規則列表:

SELECT * 
FROM fn_helpcollations()