2009-08-12 74 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()