2

考虑以下脚本 - 第二个 INSERT 语句引发主键冲突。

BEGIN TRAN

CREATE TABLE UnicodeQuestion
(
    UnicodeCol NVARCHAR(100)
    COLLATE Latin1_General_CI_AI
)

CREATE UNIQUE INDEX UX_UnicodeCol
ON UnicodeQuestion ( UnicodeCol )

INSERT INTO UnicodeQuestion (UnicodeCol) VALUES (N'ae')
INSERT INTO UnicodeQuestion (UnicodeCol) VALUES (N'æ')

ROLLBACK

据我了解,如果我想让我的索引分别处理这些值,我需要使用二进制排序规则。但是有许多二进制排序规则,它们的名称中有各自的文化!我不想要文化敏感的治疗...

在 nvarchar 列中存储任意 Unicode 数据时应该使用哪种排序规则?

4

1 回答 1

1

对于 Unicode 数据,您选择哪种二进制排序规则无关紧要

对于 Unicode 数据类型,数据比较基于 Unicode 代码点。对于 Unicode 数据类型的二进制排序规则,在数据排序中不考虑区域设置。例如,Latin_1_General_BIN 和 Japanese_BIN 在用于 Unicode 数据时产生相同的排序结果。

使用特定于区域设置的BIN排序规则的原因是,这决定了在处理非 Unicode 数据时使用的代码页。

于 2013-10-23T09:23:23.923 回答