sqlite 資料庫 boolean類型的小小測試

來源:互聯網
上載者:User

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'); -- 0insert into stu (name,flag) values ('a2','ture'); -- 0insert into stu (name,flag) values ('a3',1);  -- 1insert 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); -- nullinsert into stu (name,flag) values ('a7','2'); --1insert into stu (name,flag) values ('a8',15); --1insert 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類型來使用.

因此,可以得到下面的結論:

ps: 尚未對其進行深入瞭解,目前是實踐測試的結論,純屬猜測,如果有知情者,可告知.


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

 參考T-SQL 中對位元據類型的定義:

“使用位列(bit column)來獲得真(true)和假(false)資料類型,或是(yes)和否(no)的資料類型。位列儲存 0 或 1。位列接受 0 或 1 之外的整數值,但總是將它解釋為 1。位(bit)資料類型的列不能為 NULL,且不能對其進行索引。”

想瞭解更多,可以參考我轉載的這篇文章: 利用 UDF 輕鬆遷移


相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.