ToB企服应用市场:ToB评测及商务社交产业平台
标题:
MySQL max() min() 函数取值错误
[打印本页]
作者:
傲渊山岳
时间:
2022-8-20 15:36
标题:
MySQL max() min() 函数取值错误
今天日志出现异常,一步一步debug发现SQL语句返回值出错,进一步发现是max()函数返回出错。
点击跳转解决办法
,赶时间的朋友可以去获得答案。当然我还是希望大伙看看原由。
select max(HTMBXH) from biz_mn_contract_temp;
复制代码
返回值按理应该是10 ,结果返回了9。
网上查找后发现 是因为该字段的数据类型为 字符型 的时候 max会 自动补0 。
例如 HTMBXH:varchar(10) ,MySQL会自动补0然后比较。
例如
正常的话 max应该返回 8999999999 但是返回的却是9 。
因为MySQL比较是将9补0直到列最大位 变成9000000000 所以 9000000000>8999999999
按照这个理论 91 和9000000001 比较 ,91补0, 9100000000>9000000001 所以 返回91
解决办法
:(max min都适用)
1. 直接修改列属性 改成 数值型 或者 日期型 即可
2. 直接强制转换类型 例如
select max(HTMBXH+0) from biz_mn_contract_temp;
复制代码
这样可以获取正确的数值。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4