在MS SqlServer 查询分析器执行下面两段代码
A题.
declare @str varchar(50)
declare @str1 varchar(50)
declare @str2 varchar(50)
declare @str3 varchar(50)
set @str=null
set @str1='123'
set @str2='456'
set @str3='789'
if(@str+@str1<>@str2+@str3)
begin
print 'abcd'
end
else
begin
print 'efgh'
endB题.
declare @str varchar(50)
declare @str1 varchar(50)
declare @str2 varchar(50)
declare @str3 varchar(50)
set @str=null
set @str1='123'
set @str2='456'
set @str3='789'
if(isnull(@str,'')+@str1<>@str2+@str3)
begin
print 'abcd'
end
else
begin
print 'efgh'
endA结果为efgh,B结果为abcd
请大家帮我解释A.为什么'efgh'
A题.
declare @str varchar(50)
declare @str1 varchar(50)
declare @str2 varchar(50)
declare @str3 varchar(50)
set @str=null
set @str1='123'
set @str2='456'
set @str3='789'
if(@str+@str1<>@str2+@str3)
begin
print 'abcd'
end
else
begin
print 'efgh'
endB题.
declare @str varchar(50)
declare @str1 varchar(50)
declare @str2 varchar(50)
declare @str3 varchar(50)
set @str=null
set @str1='123'
set @str2='456'
set @str3='789'
if(isnull(@str,'')+@str1<>@str2+@str3)
begin
print 'abcd'
end
else
begin
print 'efgh'
endA结果为efgh,B结果为abcd
请大家帮我解释A.为什么'efgh'
declare @str1 varchar(50)
declare @str2 varchar(50)
declare @str3 varchar(50)
set @str=null
set @str1='123'
set @str2='456'
set @str3='789'
print @str+@str1 ---結果null
print @str2+@str3 --結果456789
if(@str+@str1 <>@str2+@str3)
begin
print 'abcd'
end
else
begin
print 'efgh'
end
set @str1='123'
set @str2='456'
set @str3='789'
if(@str+@str1 <>@str2+@str3) 有为空,所以执行
A结果为efgh
把空转化为'',所以执行B结果为abcd
declare @str1 varchar(50)
declare @str2 varchar(50)
declare @str3 varchar(50)
set @str=null
set @str1='123'
set @str2='456'
set @str3='789'
--print @str
--print @str1
--print @str2
--print @str3}
print @str+@str1
print @str2+@str3if(@str+@str1 <>@str2+@str3)
begin
print 'abcd'
end
else
begin
print 'efgh'
end
null 這裡是空值
456789
efgh