今天调程序,执行SQL老是报错。最终发现是 varchar 和 nvarchar 造成的。郁闷。 本来没有这个问题,但是接口使用方传过来的字串编码错误,导致乱码。 CREATE TABLE [ TEST ] ( [ nn ] [ varchar ] ( 50 ) COLLATE Chinese_PRC_CI_AS NOT NULL , CONSTRAINT [ PK_TEST ] PRIMARY KEY CLUSTERED ( [ nn ] ) ON [ PRIMARY ] ) ON [ PRIMARY ] GO select * from TEST insert into TEST(nn) values (N ' BSS?ê?§ID ' ) insert into TEST(nn) values (N ' BSSÕÊ»§ID ' ) /**/ /*服务器: 消息 2627,级别 14,状态 1,行 1违反了 PRIMARY KEY 约束 'PK_TEST'。不能在对象 'TEST' 中插入重复键。语句已终止。*/ declare @s nvarchar ( 50 ) , @s2 nvarchar ( 50 ) select @s = N ' BSS?ê?§ID ' , @s2 = N ' BSSÕÊ»§ID ' select 1 where @s = @s2 select 1 where N ' BSS?ê?§ID ' = N ' BSSÕÊ»§ID ' /**/ /*(所影响的行数为 0 行)(所影响的行数为 0 行)*/ declare @s varchar ( 50 ) , @s2 varchar ( 50 ) select @s = N ' BSS?ê?§ID ' , @s2 = N ' BSSÕÊ»§ID ' select 1 where @s = @s2 select 1 where N ' BSS?ê?§ID ' = N ' BSSÕÊ»§ID ' /**/ /*(所影响的行数为 1 行)(所影响的行数为 0 行)*/ 转载于:https://www.cnblogs.com/evlon/archive/2006/05/25/409049.html