读书人

奇怪的SQL查询结果,大家说说什么原因,

发布时间: 2012-02-25 10:01:47 作者: rapoo

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

读书人网 >SQL Server

热点推荐