问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

大家好,请问一下mysql的无符号字段类型是不是只能存储正数?存储人民...

发布网友 发布时间:2022-04-24 03:12

我来回答

2个回答

懂视网 时间:2022-05-02 12:09

最近自己的程序在调用mysql的存储过程传参给smallint类型变量的时候,总是出现out of range value的错误,刚开始用C数值转换方式的二进制位转换思路来思考时,总是觉得没什么问题,因为我的数确实在16位二进制数下能保存,但是后来才发现,原来mysql并不是按照这种二进制转换的方式。

 

先附上mysql各个整数类型的取值范围:

bigint
从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字)。存储大小为 8 个字节。
P.S. bigint已经有长度了,在mysql建表中的length,只是用于显示的位数
int
从 -2^31 (-2,147,483,648) 到 2^31 – 1 (2,147,483,647) 的整型数据(所有数字)。存储大小为 4 个字节。int 的 SQL-92 同义字为 integer。
smallint
从 -2^15 (-32,768) 到 2^15 – 1 (32,767) 的整型数据。存储大小为 2 个字节。
tinyint
从 0 到 255 的整型数据。存储大小为 1 字节。 

 

因为所要调用的存储过程主要是为了实现insert操作,而和这个存储过程中smallint类型的变量对应的表中栏位是一个无符号smallint,由于mysql存储过程是没有无符号这种类型,所以只好在存储过程接受时用smallint接收,当时猜想mysql可能和C语言中一样应该会自动对有符号数进行无符号数转换。

可是并不是这样,当我传入参数64000(在无符号bigint内不在有符号bigint内),mysql会提示错误out of range value,意思是超出了取值范围。在不断的测试之后,我发现mysql并不会像常用的编程语言的机制那样,会自动将有符号数转换为无符号数,当判断你不在有符号数(此处是-32768-32767)或者无符号数(0-65535)之间时,它就认定你是一个非法数,超出了范围,然后会提示错误;当你用无符号数时,你传入的若是一个负数,则认定你传入的数也是一个非法数(亲测是这样),然后也会提示该错误。

解决方法:

由于存储过程没有无符号类型,所以在接受传入的值的时候,我们可以使用大范围的数进行接收,比如这里我将smallint类型改为了int,就能正常运行了。

 

个人理解:

我个人觉得,mysql里面在数值方面并没有特别注意类型这个概念,而只是关心的是范围,我们设定了类型,其实就是设定了范围,当我们传入一个数字,如果在这个范围内,我们就认定是这个类型的。当然这是我个人的看法,只是为了方便理解。如果有什么问题的话,希望大家多提建议。

 

mysql下有符号数和无符号数的相关问题

标签:参数   进制   数字   转换   相关   之间   方便   存储   原来   

热心网友 时间:2022-05-02 09:17

存储人民币金额应该使用DECIMAL类型,保证存储和计算的精确性。如果确保金额不会包含小数部分,可以使用INT类型。绝对不可以使用浮点类型。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
找专业防水队做完还漏水怎么维权 法院会受理房屋漏水造成的纠纷吗? 巴西龟最长活多久,家养!!! 养胃的药最好的是什么啊 婴儿积食发烧不愿吃药怎么办 板门穴位在哪个部位 手机设置放偷看的方法? 凝结水回收器生产厂家? 个人账户养老金预测公式:现有5万元,缴费20年,能领多少钱? 临沂比较有名的男装品牌 mysql金额用什么类型 mysql 存储价格用什么数据类型好? MySQL数据库存储价格金额用什么数据类型好 mysql 金额用什么类型 mysql 存储金额类型,用什么数据类型比较可靠,一般企业数据用什么数据... 橡胶制品中加入炭黑的目的是什么? 炭黑和焦炭什么区别 碳黑有什么用 北京的催收电话010-63923333是西城的号吗? 0106744北京催款 合法吗 美团有北京的催收嘛 炭黑的化学成分是什么? 北京话里的“碎催”是什么意思?? 焦炭和炭黑有什么区别 010是北京哪里的催收 目前北京的债务催收公司有没有可靠的? 高耐磨炭黑对橡胶物理机械性能有什么影响 与炭黑相比,白炭黑补强的胶料哪些性能更好,为什么? 北京催收公司电话 炭黑性能对涂料有什么影响 【SQL】金额如果存在数据库中应该使用何种类型? mysql设计数据库钱用什么字段 mysql里记录货币用什么字段类型好 mysql 建表时的价格用什么类型定义? mysql里面如何存储金钱类型? mysql 金额 单价 小数2位 用int 还是decimal 关于MySQL中对于金额范围的查询 银行中mysql数字转成金额 mysql中要存储小数用什么类型数据好? 在一个程序中金额类型在sqlserver2005中定义成decimal合适还是money合适,或者其他的数据类型。为什么? 蚂蚁森林怎么领皮肤 2022蚂蚁森林山桃树多久一次? 蚂蚁森林皮肤有种黄皮卷的是什么树 蚂蚁森林我种了一颗冷杉皮肤不见了怎么找回? 蚂蚁森林合种能解锁皮肤吗 蚂蚁森林出过几款松树皮肤 蚂蚁森林初级皮肤怎么升级 蚂蚁森林新装扮怎么得 蜂蜜全部变成了白色的固体,应该如何食用 蜂蜜变成白色膏状怎么弄?