本文主要是介绍mysql中,字段类型为tinyint(1),在查询时为啥不显示正常的数字而是true或false?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
背景
在查询数据的时候发现gender字段应该显示1,2,3,4等这样的数字,但是查出来却是true或false这样的boolean类型
分析
不免产生疑问,为何education字段也是存的数字,就能正确显示出数字,而gender不行,我又查看字段,发现这两个字段的类型不一样
gender字段的类型是tinyint()类型,那在不想改变字段类型的情况下,该如何能查出正确的数据呢?
解决办法
编写查询语句时,将该字段*1
即:select *,gender*1 from t_test;
注:这里为了取出真正的数值,执行乘法操作。至于为什么要*1,因为任何数乘1都能得到原值。至于你想乘别的数值,都可以,比如*10
tinyint()类型
存储大小为1字节。
若设置unsigned类型,只能存储从0到255的整数,不能用来存储负数
若不设置unsigned类型,存储-128到127的整数
tinyint(1)类型到底有什么玄机
因为mysql中没有boolean类型,所以会用到tinyint[1]类型来表示,即:boolean=tinyint[1]
上面的问题,其实若将tinyint类型改变长度,也能解决问题
那tinyint(M)中的M是什么意思?
①tinyint的数值类型已经限制了取值范围,有符号和无符号都有,而M值并不是可以存储的数值字符长度,而是代表在显示时的最小长度
②当存储的字符长度超过M值时,并没有任何的影响,只要不超过该类型限制的范围即可
③当存储的字符长度小于M值时,并且设置了zerofill时,才在左边用0来补齐
若没有设置zerofill时,则M值没有意义
本博客是日常积累的知识,现准备逐步从云笔记移到这里,所以,有的文章可能是当时查资料及看书,再加上自己的理解得出的结论。现已找不到当时参考的文章,没办法贴出参考链接。如有冒犯,请告知,将及时贴出原文链接。
这篇关于mysql中,字段类型为tinyint(1),在查询时为啥不显示正常的数字而是true或false?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!