22,302
社区成员




declare @str varchar(300)
declare @int int
select 'vvv' + isnull(@str,'') + case when @int is null then '' else cast(@int as varchar) end
/*
vvv
(所影响的行数为 1 行)
*/
declare @str varchar(300)
declare @str2 varchar(300)
declare @s varchar(1000)
Set @str = 'Select * From pubs.dbo.employee'
set @s=@str+@str2
exec (@s)
declare @str varchar(300)
declare @s varchar(1000)
Set @str = 'Select * From pubs.dbo.employee'
set @s=@str
exec (@s)
declare @str varchar(300)
declare @str2 varchar(300)
declare @s varchar(1000)
Set @str = 'Select * From pubs.dbo.employee'
set @s=@str+@str2
exec (@s)
declare @str varchar(300)
declare @int int
print 'vvv' + isnull(@str,'') + Cast(isnull(@int,'') as Varchar)
--
vvv0
declare @str varchar(300)
declare @int int
--Set @str = ''
--Set @int = ''
Print 'vvv' + @str + Cast(@int as Varchar)
-----------------
楼主是自己理解错了吧,当没有对变量给初值时,值 为null ,null+任何值=null
所以 print 出来结果是什么也没有,但把print 改为 select 时就会显示 null.
当对变量赋值时,结果当然是vvv0 了.