SQL Server 2008 中以尾随空格作为主键的 Varchar

cac*_*upt 4 sql-server primary-key unique-key unique-constraint sql-server-2008

是否可以将 varchar 列作为具有“a”和“a”等值的主键,在 MS SQL Server 2008 中总是给出此错误“违反主键约束”。在 Oracle 中不会给出任何错误。顺便说一句,我没有以这种方式实现,我只是尝试将数据从 oracle 迁移到 sql server。

问候

小智 5

SQL-92 标准规定,出于字符串比较的目的,在比较之前将字符串填充为相同的长度:通常填充字符是空格。

因此 'a' 和 'a ' 比较 EQUAL,这违反了 PK 约束。 http://support.microsoft.com/kb/316626

我找不到任何迹象表明这种行为从那时起发生了变化。

您可能会使用 varbinary 而不是 varchar,但这可能也达不到您想要的效果。