注意mysql中MAX()和MIN()函数的用法! ! !

 2024-02-23 03:02:35  阅读 0

维护别人的代码时,需求是对课程成绩进行统计分析,并以条形图的形式展示。 有必要指出该科目的最高分和最低分。 我遇到的一个问题是,查到的结果明显不是最高分和最低分。

使用的函数是MAX()和MIN(),一些SQL语句和结果显示为:

结果显然是错误的,并且经过我自己的验证,最高分是74.4,最低分是8.6

无论如何都不应该是图中所示的结果。

起初,我怀疑这是由于 MAX() 和 MIN() 函数使用不当造成的。 于是查询这个函数的用法。 我发现数字的最大最小值这样写是没有问题的,判断分数或者其他数字的最大最小值时也是这样写的。 不知道为什么。 检查了这个字段(score)的数据类型是type后,我发现在比较的时候不能简单的使用MAX()和MIN()来比较字符串的大小。 这就是结果错误的原因。 虽然不知道为什么要设计成不同的类型,但是最终的结果对比一定是基于数值的。

发现问题:

MySQL字符串大小比较:使用MAX()查询字符串类型字段时,字符串类型大小比较是先比较第一个字符的ASCII码的大小,然后依次比较。

解决方案:

MAX( + 0)MAX(CAST( as (4,2))) as 将字符串转换为

结果是一样的:

附加说明:

字符数据的最大值按照从A到Z的第一个字母的顺序排列,越往后数值越大。 当然,汉字是按照拼音的顺序排列的。 如果第一个字符相同,则比较下一个字符,依此类推。

当然,你也可以找到日期和时间类型数据的最大/最小值。 大小排列是日期和时间的早晚。 值越早,值越小。

标签: 字符 排列 类型

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码