varchar,nvarchar不同呀。小心出错

今天调程序,执行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 行)

*/
posted @ 2006-05-25 15:53  阿牛  阅读(508)  评论(0编辑  收藏  举报