SQL Server中的Unicode唯一约束

时间:2013-10-23 08:36:11

标签: sql sql-server sql-server-2008 unicode collation

考虑以下脚本 - 第二个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数据时,我应该使用哪种排序规则?

1 个答案:

答案 0 :(得分:1)

对于Unicode数据it is irrelevant what binary collation you choose

  

对于Unicode数据类型,数据比较基于Unicode   代码点。对于Unicode数据类型的二进制排序规则,语言环境   在数据排序中不予考虑。例如,Latin_1_General_BIN和   在Unicode上使用时,Japanese_BIN产生相同的排序结果   数据

具有特定于语言环境的BIN排序规则的原因是,它确定了处理非Unicode数据时使用的代码页。