sql-server - 选择正确的 SQL Server 排序规则进行存储

标签 sql-server collation

排序规则如何影响 SQL Server 的存储以及它如何影响 Unicode 和非 unicode 数据类型?

  • 排序规则是否会影响 Unicode 存储?或者只是管理数据库内的排序规则?

  • 当我使用非 unicode 数据类型时,排序规则会受到哪些限制?

  • 如果存在限制,当我尝试存储不在非 unicode 数据类型的数据库排序规则中的字符时,会发生什么情况?

我的理解是,Unicode数据类型总是可以存储完整的Unicode数据集,而非unicode数据类型的存储能力取决于代码页(由排序规则定义)并且只能表示一些常见的该排序规则中的字符。

显然,Unicode 数据类型中的每个字符至少占用 2 个字节,而非 unicode 数据类型每个字符占用 1 个字节(或者这也会因排序规则而变化吗?)

请直接告诉我,这到底是如何工作的?

最佳答案

SQL Server 在 UCS2 中存储 Unicode 数据(NTEXT、NVARCHAR),每个字符始终为 2 个字节。

排序规则仅影响排序(和大小写)。

在非 Unicode 数据类型(TEXT、VARCHAR)中,每个字符仅使用一个字节,并且只能存储排序规则代码页的字符(正如您所述)。看这个MSDN article on collations

关于sql-server - 选择正确的 SQL Server 排序规则进行存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1826085/

相关文章:

c# - 在 SQL Server 2008 中实现(日期 - 时间增量)

sql - 由于排序规则不匹配,对两个数据库的查询有错误

postgresql - Unicode字符默认对照表

sql-server - 串行 SqlContext 错误。步骤 'connecting' 失败

sql - 无法解决 UNION 操作中 "SQL_Latin1_General_CP1_CI_AS"和 "Latin1_General_CI_AS"之间的排序规则冲突

mysql - utf-8 latin1问题charset整理

sql-server - 具有不同语言的 SQL Server Collat​​ion/ADO.NET DataTable.Locale

sql-server - LTRIM 和 RTRIM 精确修剪哪些字符?

c# - Entity Framework - 查询精度

c# - SQL Server ScriptDom 解析