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

根据官方文档的介绍:

  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,flag) values ('a9',0); --0

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

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

  -- 字符可转换为int类型的为且不为0的为 true, 转换失败或转换后为0的为 false(0)

  -- int ,long double 等数字,0为false, 其他>=1的为 true(1)

  -- 布尔类型报错, null为 null,默认值

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

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-10-28 06:03:54

sqlite数据库 boolean类型的小小测试的相关文章

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

  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');

ios-IOS本地SQLite数据库,虚拟测试可以读取,真机测试连接不上

问题描述 IOS本地SQLite数据库,虚拟测试可以读取,真机测试连接不上 RT,项目用的本地数据库文件,转存到沙盒中读取,在虚拟机上运行可以,真机调试时候连接不上,求解 还有就是打包项目时候怎么把数据库也一起打包进去? 解决方案 问题已经解决,是因为Xcode不能直接存文件到真机上的沙盒,但可以操作真机去读取项目里的文件,我改了下数据来源就可以了

[学习收藏]SQLite数据库操作学习

用Python进行SQLite数据库操作 原文参见:http://www.cnblogs.com/yuxc/archive/2011/08/18/2143606.html 简单的介绍       SQLite数据库是一款非常小巧的嵌入式开源数据库软件,也就是说没有独立的维护进程,所有的维护都来自于程序本身.它是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了.它能够支持Window

Android程序中读取使用已有的SQLite数据库

方法一: 先在 Manifest 里添加权限: <span style="font-size:12px;"><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /&

使用iOS原生sqlite3框架对sqlite数据库进行操作

使用iOS原生sqlite3框架对sqlite数据库进行操作 一.引言       sqlite数据库是一种小型数据库,由于其小巧与简洁,在移动开发领域应用深广,sqlite数据库有一套完备的sqlite语句进行管理操作,一些常用的语句和可视化的开发工具在上篇博客中有介绍,地址如下: sqlite数据库常用语句及可视化工具介绍:http://my.oschina.net/u/2340880/blog/600820.       在iOS的原生开发框架中可以对sqlite数据库进行很好的支持,这个

Python 和 Pandas 在 SQLite 数据库中的运用

本文讲的是Python 和 Pandas 在 SQLite 数据库中的运用, SQLite 是一个数据库引擎,使用它能方便地存储和处理关系型数据.它和 csv 格式很相似,SQLite 把数据存储在一个单独的文件中,它能方便地与其他人共享.大部分的编程语言和编译环境都对 SQLite 数据库提供了很好的支持.Python 也不例外,并且专门有一个访问 SQLite 数据库的程序库,叫做 sqlite3,自从 2.5 版本以来,它就已经被 Python 纳入标准库里.在这篇博文中,我们将学会如何使

SQLite数据库操作详细示例

MainActivity如下: package cc.testdb; import java.util.List; import cc.database.DBUtils; import cc.domain.Person; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.view.Window; import android.vi

android-测试字段是否为空并预防用户将空字段输入sqlite数据库

问题描述 测试字段是否为空并预防用户将空字段输入sqlite数据库 如何测试该字段不是空值呢? 我想让程序显示一个提示:用户已经完全填充好所有字段,但是下面这段代码还会显示其他情况,比如name值为null, number有值的情况. public void onClick(View arg0) { switch(arg0.getId()) { case R.id.bSQLUpdate: boolean diditwork = true; try { String name = sqlName.

SQLite数据库常用语句及MAC上的SQLite可视化工具MeasSQLlite使用

SQLite数据库常用语句及MAC上的SQLite可视化工具MeasSQLlite使用 一.引言         在移动开发中,通常会用到一些小型的数据库进行数据管理.SQLite是一款十分小巧便捷的数据库,在iOS开发中,原生框架也对其有很好的支持. 二.SQLite常用语句     数据库存在的意义就在于其对数据的整合和管理,所以数据库的核心操作无非是对数据进行增,删,改,查得操作. 1.建立数据表语句     一个数据库文件中可以由一些表组成,通过下面的语句在数据库文件中创建一张表: ?