最近自己的程序在调用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 无符号 负数_mysql下有符号数和无符号数的相关问题相关推荐

  1. mysql 无符号 负数_mysql – BETWEEN使用负值和无符号整数

    我有一个表格,其中包含典型的unsigned int主键ID select * from log_data where id between -129 and -120 看似试图返回表格中的每一行(或 ...

  2. MySQL 无符号和有符号的区别

    随笔记录: mysql无符号和有符号的区别 无符号unsigned 表示设置的的数据为0或者正数: 有符号则可以是负数 -: 内存占比 有符号 0-255 无符号 -127~127

  3. mysql整型无符号 大小_解决mysql无符号整型自减运算时溢出的问题

    溢出通常是指的数字类型的一个溢出问题了,对于这个问题小编整理了一篇关于解决mysql无符号整型自减运算时溢出的问题的教程,希望对各位同学会有所帮助. 在mysql中给一个无符号整型字段做自减运算时,如 ...

  4. 有符号数和无符号数,无符号数的减法

    结论: 无符号数在c语言中,与有符号数相比,只是改变了数据的解读方式,在手算过程中,我们可以将它作为熟悉的有符号数手算,最后以无符号数的方式解读 例子 八位字长的计算机 unsigned int x ...

  5. linux mysql无符号整型_Mysql基础

    一.SQL ( Structure query language ) 结构化查询语言 #SQL语言分为4个部分:DDL(定义).DML(操作).DQL(查询).DCL(控制) "" ...

  6. mysql 无符号填充零_MySQL无符号、填充零

    Mysql 学习之 mysql 列类型和占用的字节数 Mysql中的列类型有三大类:数值类.字符类和日期/时间类 数值类分整数型和浮点型两大类 整数型: 列名取值范围占用字节数 TINYINT非常小的 ...

  7. mysql 字段类型 负数_MySQL字段类型详解

    MySQL支持大量的列类型,它可以被分为3类:数字类型.日期和时间类型以及字符串(字符)类型.本节首先给出可用类型的一个概述,并且总结每个列类型的存储需求,然后提供每个类中的类型性质的更详细的描述. ...

  8. mysql无关子查询_mysql中相关,无关子查询,表与表之间的关系以及编码和乱码的解决...

    ※MySQL中的字符编码(注意,utf8中没有'-',跟Java中不一样) SHOW VARIABLES; //查看系统变量 //查询字符编码相关的系统变量 SHOW VARIABLES WHERE ...

  9. mysql数据类型符号位_MySQL数据类型

    学习<高性能MySQL>第4章,读书笔记. 选择数据类型的原则 更小的通常更好 尽量使用可以正确存储数据的最小的数据类型,因为这样会占用更少的磁盘.内存.CPU. 简单就好 简单数据类型的 ...

最新文章

  1. 状态保持中的cookie
  2. python美化输出模块_Python 格式化输出 ( 颜色 )
  3. html u方法,success 方法
  4. 【TDA4系列】CCS 最新版本安装与教程地址
  5. 用matlab道路交通信息化,tiaffic 基于matlab十字路口交通流模拟仿真,多种集合 263万源代码下载- www.pudn.com...
  6. windows Servers服务器系统时间总是自动更新为错误时间,修改了还是不对解决办法
  7. 在Android4.0以上设备的虚拟按键中显示menu键
  8. 第一P2P收购中国典当联盟发力供应链金融模式
  9. 浙江大学软件学院2020年保研真题Distance of Triples (25 分)
  10. 真无线蓝牙耳机排名前十的品牌,公认佩戴舒适性好的蓝牙耳机分享
  11. 英文会议口头报告(整理)
  12. php银行卡号姓名,PHP实现根据银行卡号判断银行_PHP
  13. 华为5g鸿蒙系统手机多少钱,华为Mate30Pro或成今年机皇:鸿蒙系统+麒麟985+5G基带,价格感人...
  14. ae输出quicktime设置_详解AE输出设置及解析原因
  15. Facade模式和Mediator模式
  16. ssm 远程监控linux,Wisenet SSM视频监控综合管理平台
  17. matlab 缩进快捷键(快捷删掉matlab代码前空格/换行符 批量改/删/加代码前空格)
  18. 网线还能这样玩???(哈哈哈,记一次差点被揍事件)
  19. 积水在线监测设备解决车辆误入水淹隧道问题
  20. iPhone 5 创建应用程序

热门文章

  1. Redis 的 Sentinel哨兵介绍与源码分析(1):初始化部分
  2. 什么是RAID(独立磁盘冗余阵列)?
  3. c语言学生管理系统常见问题,关于C语言学生管理系统问题
  4. python无限循环语句的代码_如何在Python中实现非阻塞无限循环
  5. Python OOP 项目实践:从农药到吃鸡
  6. 快速计算属于你的数字
  7. mybatis ------ 逆向工程(十)
  8. ImageUtils.java:图片处理工具类[裁剪/图片水印/文字水印/缩放补白/Base64加密解密]
  9. 在Unity编辑器中开发遇到问题BUG如何调试解决?
  10. [Unity脚本运行时更新]C#4新特性