我目前有一个包含4列的表。对象的ID
,另一个表中另一个对象的ID
,nvarchar
数据和bool
。
PK由前3列组成。
值größe
与grösse
冲突,große
与grosse
冲突
意思是我可以拥有前两个中的一个和后两个中的一个,但不是全部
该列的归类设置为SQL_Latin1_General_CS_AS
我相信这就是问题所在,但这确实可以正确处理许多其他unicode字符。有没有人遇到这个,知道我的问题是什么?
作为参考,上述所有内容都可以正常使用。
gråsse
grøsse
为清晰起见的例子,对我来说这是相同的印刷:
IF (N'grösse' COLLATE Latin1_General_CS_AS = N'größe' COLLATE Latin1_General_CS_AS)
BEGIN
PRINT 'EQUAL'
END
当我预计这些不同时。
答案 0 :(得分:3)
处理许多其他unicode字符正确
对你来说意味着什么? SQL Server中的不同排序规则具有不同的行为。也许您正在寻找像LATIN1_GENERAL_BIN2
这样的二进制排序规则。这个只比较代码点。仅当字符串是二进制相同时才会出现重复项。您的示例代码的行为与您希望的一样。
非二进制排序规则尝试应用字典规则。他们对电话簿中的字符串进行排序和比较。