• MySQL数据库中tinyint类型字段读取数据为true和false (MySQL的boolean和tinyint(1))


    数据库一个表中有一个tinyint类型的字段,值为0或者1,如果取出来的话,0会变成false,1会变成true。

    MySQL保存boolean值时用1代表TRUE,0代表FALSE。boolean在MySQL里的类型为tinyint(1)。MySQL里有四个常量:true,false,TRUE,FALSE分别代表1,0,1,0。

    场景:

      字段:status (值为1,2,3)

      类型:tinyint  长度:1(有符号的)

      结果:查询出来的数据列表,状态值不管是1还是2还是3,都是"boolean true"

    分析并解决:

      分析:由于MySql中没有boolean类型,所以会用到tinyint[1]类型来表示,在mysql中boolean=tinyint[1]

      解决:tinyint类型长度的问题,当我把长度改成4时,查询结果就正常了

    猜想并使用新的方法解决:

      如果不改变类型的长度,怎么让查询的结果正确呢?需要在查询语句上面做修改了

      在你需要执行的sql语句中,把这个状态字段*1,结果就会得到数据库存的值了(注意:记得加别名,不然查询出来的就是status*1 => '1')

    SELECT
        id,
        name,
        status*1 AS status,
        add_time
    FROM
        tableName
    WHERE
        play_type = 0

    总结一下以上的两种解决方法:

      1.修改tinyint类型的长度

      2.在查询的sql语句上面做修改 

    所以由这里可以看出,当你使用tinyint[1]来存储超过0,1两个值以外的值,比如存储2,那这个2就是脏数据就用tinyint[4],tinyint[1]只适用于存储0和1两个值,也即真和假,true和false

      一般的,咱们如果存的是纯数字的话,建议用tinyint,如果是字符串,且是固定长度的,建议用char,而enum的枚举字段,使用的使用需要慎重考虑,避免带来不必要的麻烦

    还有一种方式是在连接url上添加 tinyInt1isBit=false :

    url: jdbc:mysql://192.168.17.107:3306/oip_back?useUnicode=true&characterEncoding=utf-8&useSSL=false&tinyInt1isBit=false
  • 相关阅读:
    python+requests——定制请求头——cookie
    python+requests——高级用法——上传文件
    彻底搞定C指针例题
    static_cast, dynamic_cast, reinterpret_cast, const_cast区别比较
    单链表的基本操作
    new int[10]()
    用人单位给计算机系学生的一封信(超长评论版)
    指向二维数组的指针
    《windows程序设计》第一章学习心得
    VS2010编译Lua程序
  • 原文地址:https://www.cnblogs.com/javabg/p/10215809.html
Copyright © 2020-2023  润新知