必威体育Betway必威体育官网
当前位置:首页 > IT技术

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

时间:2019-08-15 05:11:05来源:IT技术作者:seo实验室小编阅读:72次「手机版」
 

tinyint

数据库一个表中有一个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的枚举字段,使用的使用需要慎重考虑,避免带来不必要的麻烦

相关阅读

junit 方法:assertEquals 和 assertTrue

assertEquals 和 assertTrue 区别 代码块 运行成功结果 assertEquals 运行失败后的错误提示 assertTrue 运行失败后的错误提示 总

MQTT 5.0 新特性(三)| 有效载荷标识与内容类型

image.png有效载荷标识(Payload Format Indicator)在 MQTT 5.0 的所有报文类型中,该属性只存在于 PUBLISH 报文和 CONNEC

JS中的数组学习(数组的申明,数组的长度,数组便利的两种类

<html> <head> <title>js的数组</title> <meta charset="UTF-8"/> <!-- js的数组学习: 问题: 变量在程序中是用

Mysql中的Decimal类型是什么?

 我们在Mysql中存字段的时候,比如,一些与金钱有关的数据。这个时候就会对精确到的要求非常高。那么这个时候,就会发现我们之前所学

navigator.userAgent获取浏览器信息(类型及系统)

浏览器对于我们来说,可能是最熟悉的工具了。熟知的浏览器Firefox、Opera、Safari、IE、Chrome以外,据说世界上还有近百种浏览器。通

分享到:

栏目导航

推荐阅读

热门阅读