Gen*_*нин 2 sql sql-server collation internationalization codepages
我在SQL Server 2008 R2 dev上,服务器默认排序规则是Cyrillic_General_CI_AS
执行
SSMSSELECT'éÉâÂàÀëËçæà'COLLATE Latin1_General_CS_AS
或
SELECT 'éÉâÂàÀëËçæà' COLLATE Latin1_General_CI_AI
Run Code Online (Sandbox Code Playgroud)
输出
为什么?
查询中的那些字符文字首先在数据库设置的任何排序规则下转换为varchar字符串,然后您的排序规则转换生效.
如果你想传递这样的字符文字并确保忠实地表示所有字符,最好将它们作为nvarchar文字传递:
create database CollTest collate Cyrillic_General_CI_AS
go
use CollTest
go
SELECT 'éÉâÂàÀëËçæà' COLLATE Latin1_General_CS_AS
SELECT 'éÉâÂàÀëËçæà' COLLATE Latin1_General_CI_AI
go
SELECT N'éÉâÂàÀëËçæà' COLLATE Latin1_General_CS_AS
SELECT N'éÉâÂàÀëËçæà' COLLATE Latin1_General_CI_AI
go
Run Code Online (Sandbox Code Playgroud)
输出:
-----------
eEaAaAeEc?a
(1 row(s) affected)
-----------
eEaAaAeEc?a
(1 row(s) affected)
-----------
éÉâÂàÀëËçæà
(1 row(s) affected)
-----------
éÉâÂàÀëËçæà
(1 row(s) affected)
Run Code Online (Sandbox Code Playgroud)