Asterisk中的queue_log表记录了一些呼叫数据
所有的列都是char(50),因为有时保存字符串数据,有时保存整数数据。
我想查询一些关于电话的信息。在这个查询中,我总是在一列中得到整数数据,我想得到最大值。
MySQL返回一个不一致的MAX数据
我怎么能得到一个字符列在所有行的整数数据的真正最大值?
恶心!但是这种数据格式有时是必要的,特别是当您拥有实体-属性-值(EAV)数据结构时。即使在这种情况下,建议为不同的类型使用不同的列,因此这种类型的操作更自然。
但是,你可以在MySQL中轻松地做你想做的事情。如果整数总是非负的,下面的操作应该很容易工作:
select max(col + 0)
from queue_log ql;
MySQL将字符串转换为一个数字进行加法。它会无声地忽略字母。转换到第一个字母就停止了。如果字符串开头没有数字,则返回0。
注意:这也会转换十进制数。您指定了"integer",但不清楚是否有要忽略的十进制数。
使用CAST()
函数,
SELECT MAX(CAST(COLUMN as INTEGER)) FROM TABLE;