如何在字符列中选择真正的最大整数



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;

相关内容

  • 没有找到相关文章

最新更新