varchar,nvarchar不同呀。小心出错

论坛 期权论坛 脚本     
匿名技术用户   2020-12-28 10:44   28   0
今天调程序,执行SQL老是报错。最终发现是 varchar 和 nvarchar 造成的。郁闷。
本来没有这个问题,但是接口使用方传过来的字串编码错误,导致乱码。
None.gifCREATE TABLE [TEST] (
None.gif
[nn] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
None.gif
CONSTRAINT [PK_TEST] PRIMARY KEY CLUSTERED
None.gif (
None.gif
[nn]
None.gif )
ON [PRIMARY]
None.gif)
ON [PRIMARY]
None.gif
GO
None.gif
None.gif
select * from TEST
None.gif
None.gif
insert into TEST(nn)
None.gif
values(N'BSS?ê?§ID')
None.gif
None.gif
insert into TEST(nn)
None.gif
values(N'BSS§ID')
ExpandedBlockStart.gifContractedBlock.gif
/**//*
InBlock.gif服务器: 消息 2627,级别 14,状态 1,行 1
InBlock.gif违反了 PRIMARY KEY 约束 'PK_TEST'。不能在对象 'TEST' 中插入重复键。
InBlock.gif语句已终止。
InBlock.gif
ExpandedBlockEnd.gif
*/

None.gif
None.gif
declare @s nvarchar(50)
None.gif ,
@s2 nvarchar(50)
None.gif
None.gif
select @s =N'BSS?ê?§ID' , @s2 = N'BSS§ID'
None.gif
None.gif
select 1 where @s=@s2
None.gif
None.gif
select 1 where N'BSS?ê?§ID'=N'BSS§ID'
ExpandedBlockStart.gifContractedBlock.gif
/**//*
InBlock.gif
InBlock.gif(所影响的行数为 0 行)
InBlock.gif
InBlock.gif
InBlock.gif(所影响的行数为 0 行)
ExpandedBlockEnd.gif
*/

None.gif
None.gif
declare @s varchar(50)
None.gif ,
@s2 varchar(50)
None.gif
None.gif
select @s =N'BSS?ê?§ID' , @s2 = N'BSS§ID'
None.gif
None.gif
select 1 where @s=@s2
None.gif
None.gif
select 1 where N'BSS?ê?§ID'=N'BSS§ID'
ExpandedBlockStart.gifContractedBlock.gif
/**//*
InBlock.gif
InBlock.gif(所影响的行数为 1 行)
InBlock.gif
InBlock.gif
InBlock.gif(所影响的行数为 0 行)
InBlock.gif
ExpandedBlockEnd.gif
*/

转载于:https://www.cnblogs.com/evlon/archive/2006/05/25/409049.html

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP