加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

sqlite 数据库 boolean类型的小小测试

发布时间:2020-12-12 20:04:18 所属栏目:百科 来源:网络整理
导读:根据官方文档的介绍: SQLite does not have a separate Boolean storage class. Instead,Boolean values are stored as integers 0 (false) and 1 (true). sqlite数据库中没有单 独的 Boolean 存储类,Booean值以0(false)和1(true)来存储. 经我短时间测试的实


根据官方文档的介绍:

SQLite does not have a separate Boolean storage class. Instead,Boolean values are stored as integers 0 (false) and 1 (true).

sqlite数据库中没有单独的Boolean存储类,Booean值以0(false)和1(true)来存储.


经我短时间测试的实践,显示boolean 有三种状态,0(false) 1(true) 和 null,如下图所示,


经过下列插入语句,测试,均可插入成功.而且,可以通过

select * from stu where flag ="数据库"

查询到name 为a9 的行.

insert into stu (name,flag) values ('a1','true'); -- 0
insert into stu (name,flag) values ('a2','ture'); -- 0
insert into stu (name,flag) values ('a3',1);  -- 1
insert into stu (name,flag) values ('a4','null'); --0 
insert into stu (name,flag) values ('a5','1');   --1 
insert into stu (name,flag) values ('a6',null); -- null
insert into stu (name,flag) values ('a7','2'); --1
insert into stu (name,flag) values ('a8',15); --1
insert into stu (name,flag) values ('a9',"数据库"); --0

导出数据库,可以发现,执行的sql语句是这样的,

insert into [stu] values('a1',0);
insert into [stu] values('a2',0);
insert into [stu] values('a3',1);
insert into [stu] values('a4',0);
insert into [stu] values('a5',1);
insert into [stu] values('a6',null);
insert into [stu] values('a7',1);
insert into [stu] values('a8',1);
insert into [stu] values('string',0);
insert into [stu] values('string2',0);
insert into stu (name,0); --0

如此,猜想,sqlite 是采用了 字符型存储插入的boolean类型数据,但是,取出的时候,会将插入的字符型数据转换成int类型来使用.

因此,可以得到下面的结论:

  1. -- 字符可转换为int类型的为且不为0的为true,转换失败或转换后为0的为 false(0)
  2. --int,long double 等数字,0为false,其他>=1的为 true(1)
  3. --布尔类型报错,null为 null,默认值

ps: 尚未对其进行深入了解,目前是实践测试的结论,纯属猜测,如果有知情者,可告知.


---------2014年4月12日 更新-------

参考T-SQL 中对位数据类型的定义:

“使用位列(bit column)来获得真(true)和假(false)数据类型,或是(yes)和否(no)的数据类型。位列保存 0 或 1。位列接受 0 或 1 之外的整数值,但总是将它解释为 1。位(bit)数据类型的列不能为 NULL,且不能对其进行索引。”

想了解更多,可以参考我转载的这篇文章:利用 UDF 轻松迁移

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读