Asterisk中的queue_log表記錄了一些調用數據。如何在char列中選擇真正的MAX整數?
所有列都是char(50),因爲有時會保存String數據,有時會保存整數數據。
我有一個查詢來獲取有關調用的一些信息。 在這個查詢中,我總是在列中獲取整數數據,而我想獲得MAX。
MySQL給我返回一個不連貫的MAX數據。
如何獲取所有行中char列的實際MAX值整數數據?
Asterisk中的queue_log表記錄了一些調用數據。如何在char列中選擇真正的MAX整數?
所有列都是char(50),因爲有時會保存String數據,有時會保存整數數據。
我有一個查詢來獲取有關調用的一些信息。 在這個查詢中,我總是在列中獲取整數數據,而我想獲得MAX。
MySQL給我返回一個不連貫的MAX數據。
如何獲取所有行中char列的實際MAX值整數數據?
Yuck!但是這種數據格式有時是必需的,特別是當你有實體屬性值(EAV)數據結構時。即使在這種情況下,建議爲不同類型設置不同的列,因此這種類型的操作更自然。
但是,你實際上可以在MySQL中做你想要的東西。如果整數總是非負數,則以下內容應該很容易工作:
select max(col + 0)
from queue_log ql;
MySQL會將字符串轉換爲數字以進行加法運算。它默默無視字母。並且,轉換在第一個字母停止。如果字符串的開頭沒有數字,則返回0.
注意:這也將轉換十進制數字。您指定「整數」,但您不清楚是否有要忽略的十進制數字。
使用CAST()
功能,
SELECT MAX(CAST(COLUMN as INTEGER)) FROM TABLE;