2014-04-02 45 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条件会过滤掉这些值,由于正则表达式... –