innodb_buffer_pool_instances_MySQL datediff

innodb_buffer_pool_instances_MySQL datediff今天日志出现异常,一步一步debug发现SQL语句返回值出错,进一步发现是max()函数返回出错。点击跳转解决办法,赶时间的朋友可以去获得答案。当然我还是希望大伙看看原由。 select max(HT

MySQL max() min() 函数取值错误

今天日志出现异常,一步一步debug发现SQL语句返回值出错,进一步发现是max()函数返回出错。点击跳转解决办法,赶时间的朋友可以去获得答案。当然我还是希望大伙看看原由。

select  max(HTMBXH) from biz_mn_contract_temp;

innodb_buffer_pool_instances_MySQL datediff

返回值按理应该是10 ,结果返回了9。

innodb_buffer_pool_instances_MySQL datediff

网上查找后发现 是因为该字段的数据类型为 字符型 的时候 max会 自动补0 。

例如 HTMBXH:varchar(10)  ,MySQL会自动补0然后比较。

innodb_buffer_pool_instances_MySQL datediff

例如  

innodb_buffer_pool_instances_MySQL datediff

正常的话 max应该返回 8999999999 但是返回的却是9

innodb_buffer_pool_instances_MySQL datediff

因为MySQL比较是将9补0直到列最大位  变成9000000000 所以 9000000000>8999999999 

按照这个理论 919000000001 比较 ,91补0,    9100000000>9000000001  所以 返回91

innodb_buffer_pool_instances_MySQL datediff

innodb_buffer_pool_instances_MySQL datediff

解决办法:(max min都适用)

1. 直接修改列属性  改成 数值型 或者 日期型 即可

2. 直接强制转换类型  例如 

select  max(HTMBXH+0) from biz_mn_contract_temp;

这样可以获取正确的数值。

原文地址:https://www.cnblogs.com/cking98/archive/2022/06/28/16419244.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/5071.html

(0)
上一篇 2023-05-24
下一篇 2023-05-24

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注