李战:
发现SQL Server 2005一个重大BUG, 新增的HashBytes对NULL值的处理有严重问题啊!
[阅读: 631] 2007-12-16 07:58:11
在Microsoft SQL Server Management Studio中执行下列查询
declare @D varchar(max)
set @D = ''
select HashBytes('MD5', @D) --此处每次返回 NULL值
set @D = NULL
select HashBytes('MD5', @D) --此处每次却返回不固定的奇怪值
再看:
declare @D1 varchar(max), @D2 varchar(max)
select HashBytes('MD5', @D1), HashBytes('MD5', @D2)
默认情况,如果变量未赋值,其初始值为NULL,然而上述返回值一样不可确定。
显然忘记对NULL的判断了,也许直接把变量指向的某块不确定的内存数据给HASH了。
让我费了半天工夫才查处问题,只好自己做判断,绕开这个BUG。
微软那位编HashBytes函数的程序员,该打屁股!
李战(leadzen).深圳 2007-12-16
李战(leadzen)