有的时候在mysql 的sql 语句中使用max() 函数或者某别的最大值。获取的结果和预期的结果不一样。这是因为在max(列名)的时候,必须得注意 列的存储 定义的字段类型是什么。字符串类型。还是数值类型。如果是字符串的话,这就得不到预期的结果。
先准备数据:
下来获取curdata的最大值,用max函数。
期望结果:13.6 。得到的结果
函数用max 是没有问题的。有的时候我们为了方便,curdata的定义是varchar 类型的,问题就出现这里。max 函数没有并没有按我们预期现象的数字去最大而是按照字符型类型的从第一位逐个往后排序获取最大的。
所以在max的时候必须把 列的数值类型 字符串转成 数值类型。
一般有 3中方式:
1、利用“+”运算符,语法“'字符串' + 0”;
2、利用cast()函数,语法“cast('字符串' as 数值类型)”;
3、利用convert()函数,语法“convert('字符串', 数值类型)”
示例:+0的方式
示例:cast 方式
注意:数值类型,可以分为三种:
整数 : SIGNED
无符号整数 : UNSIGNED
浮点数 : DECIMAL
decimal (p,d) P表示整数的位数。d表示小数点后面的位数
示例: CONVERT 方式
用法;conver( 列名,数值类型)