排序规则如何影响 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/