Asterisk中的queue_log表记录了一些调用数据。
所有列都是char(50),因为有时会保存String数据,有时会保存整数数据。
我有一个查询来获取有关通话的一些信息。 在这个查询中,我总是在一列中得到整数数据,我想得到MAX。
MySQL给我一个不连贯的MAX数据。
如何获取char列的实际MAX值以获取所有行的整数数据?
答案 0 :(得分:4)
呸!但这种数据格式有时是必要的,特别是当你有实体 - 属性 - 值(EAV)数据结构时。即使在这种情况下,建议为不同类型使用不同的列,因此这种操作更自然。
但是,你可以在MySQL中轻松地做你想做的事。如果整数总是非负数,则以下内容应该很容易起作用:
select max(col + 0)
from queue_log ql;
MySQL会将字符串转换为添加的数字。它默默地忽略了字母。并且,转换在第一个字母处停止。如果字符串开头没有数字,则返回0。
注意:这也会转换十进制数字。您指定“整数”但不清楚是否有要忽略的十进制数。
答案 1 :(得分:0)
使用CAST()
功能
SELECT MAX(CAST(COLUMN as INTEGER)) FROM TABLE;