MySQL数据库中tinyint类型字段读取数据为true和false
来源:互联网 发布:微信无法连接网络 编辑:程序博客网 时间:2024/05/22 01:27
MySQL数据库中tinyint类型字段读取数据为true和false
一、解决读取数据为true/false的问题
场景:
字段: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_timeFROM tableNameWHERE play_type = 0
总结一下以上的两种解决方法:
1.修改tinyint类型的长度
2.在查询的sql语句上面做修改
二、扩展一下tinyint[1]
关于tinyint[1]在官网里边有一段话:
?115,72005,72005
Which would be the more optimzed way to store a boolean, TINYINT(1) or ENUM( 'true' , 'false')? It seems that when storing an enum w/ two settings should only take up one bit, 0 or 1, but would spend more time looking up the enums in the beginning of the query. tinyint(1) however would take up 4 bits assuming it ranged 0-9. So it seems if you just wanted to fetch the value, tinyint(1) would be faster, but if you are searching through lots of records enum('true','false') would be faster. Do you concur??
翻译过来如下:
TINYINT(1)或ENUM('真','假')?
用ENUM枚举当存储只有2个值时只占用一个位的宽度,0或1,但会花更多的时间去寻找了枚举查询的开始。
用TINYINT(1)默认就会占用4个位的宽度(0000)
得出结论:
比如要存储一个介于0-9之间的值,为了查询获取这个值,建议用TINYINT(1)会更快,
但如果你是为了大量记录枚举(“真”,“假”),那么用ENUM( 'true' , 'false') 搜索会更快。
所以由这里可以看出,当你使用tinyint[1]来存储超过0,1两个值以外的值,比如存储2,那这个2就是脏数据,tinyint[1]只适用于存储0和1两个值,也即真和假,true和false
一般的,咱们如果存的是纯数字的话,建议用tinyint,如果是字符串,且是固定长度的,建议用char,而enum的枚举字段,使用的使用需要慎重考虑,避免带来不必要的麻烦
- MySQL数据库中tinyint类型字段读取数据为true和false
- MySQL数据库中tinyint类型字段读取数据为true和false
- MySQL数据库中tinyint类型字段读取数据为true和false
- MySQL数据库中字段类型为tinyint,读取出来为true/false的问题
- MySQL数据库中tinyint字段值为1,读取出来为true的问题
- SQL批量更新数据库中所有用户数据表中字段类型为tinyint为int
- mybatis 连接mysql数据库 tinyint 为boolean类型
- 总结JS中所有变量的类型和true/false
- js中Boolean值为false和true的情况:
- 小程序中disabled为false和true
- MySQL 字段类型 (int) (mediumint) (smallint) (tinyint)
- kettle处理mysql的tinyint字段类型
- FireDAC 如何按整型(Byte)读取 MySQL TinyInt(1) 类型字段?
- mybatis/JDBC读取mysql数据库中CHAR(1)类型数据为空
- mybatis连接mysql数据库 tinyint为boolean类型,怎样使其返回类型为integer
- java mysql 表中字段是tinyint(1)类型,hibernate自动生成bean对应属性为boolean类型,如何传值
- mysql数据库tinyint数据取出0和1的方法
- GridView绑定数据库中bit型的数据显示成0和1而不是True和False
- Android中事件的分发与处理流程
- 软件调试笔记19
- ORA-01187,ORA-01110报错
- 水池数目
- Java算法面试题(004) 实现一个算法来确定一个字符串是否具有所有唯一的字符
- MySQL数据库中tinyint类型字段读取数据为true和false
- Chrome调试js经常出现的问题集合
- 9个最重要的生活态度
- Java的原子类
- springBoot(一)
- 解决@ResponseBody注解返回中文乱码
- 3D扫描仪到底是怎么工作的?
- POJ 1159.Palindrome
- 前端页面Double转换Integer,input前段页面的类型转换