• 技术文章 >数据库 >mysql教程

    MySQL BIGINT UNSIGNED valueis out of range...的问题和解决_MySQL

    2016-06-01 12:58:46原创1813
    MySQL处理两个整数(INT)相减的时候,如果其中有一个是UNSIGNED INT类型的,那么结果就被当做是UNSIGNED的。

    如果相减的结果是负数:

    在MySQL 5.5.5之前,结果变成了最大的整数(18446744073709551615)

    从MySQL 5.5.5开始,这种情况会返回一个错误:BIGINT UNSIGNED value is out of range... 比如: 如果结果为负数: [SQL] SELECT (CAST(0 AS UNSIGNED)-1); [Err] 1690 - BIGINT UNSIGNED value is out of range in '(cast(0 as unsigned) - 1)'
    [SQL] SELECT (1-CAST(2 AS UNSIGNED)); [Err] 1690 - BIGINT UNSIGNED value is out of range in '(1 - cast(2 as unsigned))'
    如果结果为正数: [SQL] SELECT (1-CAST(0 AS UNSIGNED)); 1

    解决方法: 1、如果确实可以接受负数的结果,那么把其中的UNSIGNED字段强转为SIGNED类型: [SQL] SELECT (1-CAST(2 AS SIGNED)); -1

    如果计算结果是要插入到另外一个UNSIGNED INT字段中的话,那么就不要强转了,直接捕捉并报告异常。
    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:问题
    上一篇:mysql本地访问linux服务器,出现SQLSTATE[HY000][1130]Host'127.0.0.1&_MySQL 下一篇:MySQLStudy之--PerconaServer版本_MySQL
    Web大前端开发直播班

    相关文章推荐

    • MySQL性能调优之分区表(总结分享)• mysql怎么增加权限• 夯实MySQL基础的问题归纳• mysql视图与表的区别是什么• 浅析MySQL中的事务隔离级别,聊聊其实现原理

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网