我的数据库中有一些内容(用于我们的语言)'奇怪'字符。字符串与SqlServer中的'奇怪字符'比较
例如:
Å
当使用SQL Server中的like
声明字母A
,这不返回的结果,因为Å
不是A
。
SqlServer有没有办法将Å
作为E
(而é
作为'e
'等)?
我的数据库中有一些内容(用于我们的语言)'奇怪'字符。字符串与SqlServer中的'奇怪字符'比较
例如:
Å
当使用SQL Server中的like
声明字母A
,这不返回的结果,因为Å
不是A
。
SqlServer有没有办法将Å
作为E
(而é
作为'e
'等)?
你的意思是“Å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
您可以在您的查询COLLATE
子句指定口音大小写排序:
SELECT *
FROM your_table
WHERE your_column LIKE 'A%' COLLATE Latin1_General_CI_AI
你需要为您的语言使用适当的排序规则。内置fn_helpcollations
函数将给你一个所有支持的排序规则列表:
SELECT *
FROM fn_helpcollations()
谢谢,这是有效的。 你有任何想法,如果这也可能在Linq实体? – Michel 2009-08-12 11:41:02
不客气。对不起,我没有。 – gbn 2009-08-12 11:55:17
也没有发现,用你的代码创建了一个SP。很棒。 – Michel 2009-08-27 09:21:13