奇怪的SQL查询结果,大家说说什么原因
declare @a int;
select @a=0
if @a=''
select '空'
else
select '不空'
if @a=0
select '零'
else
select '不零'
select @a=''
if @a=''
select '空'
else
select '不空'
if @a=0
select '零'
else
select '不零'
--返回的结果居然是空零空零,难道''跟零是相等的?
--@a为bigint,float类型也一样
------解决方案--------------------变量没有赋值吧。没什么不怪的。得出的结果不是null就是0
试下赋值。
------解决方案--------------------默认值吧!@a 是int的。
''与0是不是两个被和谐成0了?
------解决方案--------------------可能是在隐式数据类型转换时,将0所对应的二进制值00转换成了空串,这在强数据类型中是不允许的.
类似的:
SQL code
select case when 0=' ' then 1 else 0 end
/*
-----------
1
(1 行受影响)
*/