日期:2014-05-17  浏览次数:20446 次

tinyint存储0的奇怪问题
在sqlserver2005设计的时候偶然遇到这样一个问题:

declare @i tinyint
set @i=0
if(@i='')
print 'yes'

为什么当i等于0的时候会执行print语句,实在搞不懂。i为其他值的时候不会执行print语句。难道i=0和i为空白是等价的吗?

------解决方案--------------------
数据类型隐式转换,''自动转换为0
如:SELECT CAST('' AS INT),輸出結果就是0

------解决方案--------------------
空字符,系统会默认为0.
不光tinyint是这样,所有数据类型都是这样(decimal除外),包括int,bigint,flot