今天公司自己开发进销存的系统,同事要求新增商品的时候能商品编号能够自动识别,于是我新增了以下的代码
$query=$this->db->query("select max(number) as number from good_list");
$res=$query->result_array();
$data['number'] = $res[0]['number'];
而上面的代码执行后MySQL数据库所取到最大的值为99,我看了数据库最大的值却是855
于是就发现了之前设计数据库的时候MySQL的类型是varchar!
接着我把MySQL语句进行修改为select max(number+0),执行后已经成功显示855,但是感觉+0后期会导致BUG!
所以最后把语句改为SELECT MAX(CAST(number AS UNSIGNED)) AS number FROM good_list;执行后成功!
问题分析:在MySQL种,varchar的字段使用MAX函数进行取最大值查询时,发现取到的值始终是9,不论是否多少最终取到都是9.
原因是max() 是对数字类型求最大,而varchar 则会出现异常。
转载声明:本站发布文章及版权归原作者所有,转载本站文章请注明文章来源!