日期:2014-05-18  浏览次数:20425 次

奇怪的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 行受影响)

*/