sql中nchar与nvarchar的问题

来源:百度知道 编辑:UC知道 时间:2024/05/31 00:40:28
declare @stuid nvarchar(10)
select top 1 @stuid=stuid from stuinfo order by stuid desc
if(@stuid is null)
set @stuid='0001'
else
begin
set @stuid='000'+convert(nvarchar,convert(int,(@stuid+1)))
set @stuid=right(@stuid,4)
print @stuid
end

如上面的存储过程
可以输出0002
但如果换成nchar(10)的话
无法输出数据
必须是nchar(4)才可以
怎么回事???
为什么nvarchar可以呢???

nchar(10)会不足10位后面自动填空格。
所有你选nchar(10)的时候出来的是4个空格。你可以去length看看
nvarchar(10)不足10位的后面不填

——-补充
当你选择nchar(4)的时候正好是0001
如果是nchar(5)那么出来的就是001
你可以试试

nchar()是固定长度的字符
nvarchar()是可变长度的
如果是nchar(10)的话,他会自动用空格不全剩余的空位置