• SQLite中BOOLEAN在where中的奇怪现象


    晚上写数据库的作业,遇到一道题,要求写出查询语句并写出结果,人脑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里面的

  • 相关阅读:
    4.状态简览
    3.获取git仓库
    2.获取帮助
    1.初次运行git前的配置
    linux命令总结
    使用github参与到开源项目的维护
    mongodb远程连接
    springmvc/springboot处理前台字符串日期自动转换成后台date类型的三种办法
    事务明明配置没有问题,出错时却不执行回滚
    tmux 安装
  • 原文地址:https://www.cnblogs.com/BadCodeBuilder/p/12775413.html
Copyright © 2020-2023  润新知