2014-04-02 48 views
0

需要一種查詢,返回的VARCHARmaximal or minimum值。比較爲unsigned int,值不是int不會簡單地考慮在內。Mysql的VARCHAR作爲INT最大值

例如,

1 
2 
3 
gggg123 
435 
500000.123 

答案:maximum - 435, minimum - 1

NULL 
fff 
1 
- 56 

答案:maximum - 1, minimum - 1

+0

這樣 - 你需要比較僅是有效的整數值? –

+0

爲什麼「最大--1,最小--1」? –

+0

[*小提琴演示*](http://sqlfiddle.com/#!2/b90fa/5) –

回答

1

自從你只需要你需要提取的列值採用正則表達式,其是正數的正整數然後從他們

找到馬克斯
Select MAX(Cast(columnName) as UNSIGNED) 
From tableName 
Where columnName REGEXP '^[0-9]+$' 

編輯

正如指出阿爾瑪做的,強制轉換爲int並不在MySQL存在,而不是它相當於是無符號的。

不管怎麼說鑄造這裏不需要..

Select MAX(columnName),MIN(columnName) 
    From tableName 
    Where columnName REGEXP '^[0-9]+$' 
+0

再次失敗(CAST這裏_wrong_)。此外 - 'CAST'到'INT' _doesn't exist_ –

+0

@AlmaDo ..是..糾正它.. –

+0

@AlmaDo但WHERE條件會過濾掉這些值,由於正則表達式... –