首页 > 数据库技术 > 详细

SQLite中BOOLEAN在where中的奇怪现象

时间:2020-04-25 23:34:20      阅读:113      评论:0      收藏:0      [点我收藏+]

晚上写数据库的作业,遇到一道题,要求写出查询语句并写出结果,人脑DBMS?这么繁重的体力活肯定不干,果断把作业(docx版)的数据拿出来转csv导入到SQLite里面,反正是写SQL语句,管它那个SQL呢,然后就遇到了一个奇怪的bug

DDL如下

CREATE TABLE Printer (
    model VARCHAR (4) PRIMARY KEY,
    color BOOLEAN,
    type  VARCHAR (7),
    price INTEGER
);

数据如下

model,color,type,price
3001,true,ink-jet ,99
3002,false,laser ,239
3003,false,laser ,899
3004,true, ink-jet ,120
3005,false, laser ,120
3006,true,ink-jet ,100
3007,true,laser ,200

其中有一问就是要求选出是彩色打印机的所有属性,即color==true的,还不简单

select * from Printer where color = true;

放到shell里面一跑,嗯?啥都没有?以为shell坏了,再放到sqlitestudio里面跑一下,还是空,思前想后百思不得其解,准备来写这个bug的时候,灵稽一动,我手动插一个数据试试

insert into Printer values(3008, true, "laser", 500);

然后再按上上条语句来查询,出现一条结果!找到了,导入的数据不是BOOLEAN,盲猜是字符串,于是做了如下尝试

select * from Printer where color = "true";

该出来的都出来了,而且刚刚手动插入的那条没有出现,罪魁祸首找到了

SQLiteStudio数据导入是将false/true作为字符串导入到BOOLEAN里面的

SQLite中BOOLEAN在where中的奇怪现象

原文:https://www.cnblogs.com/BadCodeBuilder/p/12775413.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!