最近给客户的数据库手动升级,碰到一个疑惑的地方。升级代码是:
with adoquery1 do
begin
close;
sql.clear;
sql.add('update xtsz set column1=:v0');//column类型是bit
parameters[0].value := false;
execSQL;
end;
把SQL语句拿到access的查询中执行,v0那地方填false和true都不行,那肯定是0或非0了。到底0为false还是非0为false呢?打开xtsz表中已有的记录,其中有一个column2字段也是bit类型,下面打着勾,说明是true,那我就测试一下:
select iif(column2=0,'false','true') from xtsz
执行结果是true,说明这个判断是对的,等于0的时候为false,非0时候是true。
那还有一个疑问,非0准确吗?什么数字都行?那再测试一下:
select iif(column2=1,'true','false') from xtsz //column2也有一条记录没有打钩,说明是false
执行后返回是false,说明1不是false,再改一个:
select iif(column2=-1,'true','false') from xtsz
执行后返回结果是true,这下对了。再对其他数进行测试返回的都是false,这就说明了,false只对应一个数字,那就是-1.
结果出来了,在access中,是/否,也就是bit类型的对应情况是,false=0,true=-1.