【问题标题】:Mysql varchar as int max valueMysql varchar 作为 int 最大值
【发布时间】:2014-04-02 06:58:32
【问题描述】:

需要一个返回maximal or minimumVARCHAR 的查询。与 unsigned int 相比,非 int 的值不会简单地考虑在内。

例如,

1
2
3
gggg123
435
500000.123

回答:maximum - 435, minimum - 1

NULL
fff
1
- 56

回答:maximum - 1, minimum - 1

【问题讨论】:

  • 因此 - 您只需要比较有效整数的值吗?
  • 为什么是maximum - 1, minimum - 1

标签: mysql compare varchar


【解决方案1】:

由于您只需要正整数,因此您需要使用正数的正则表达式提取列值,然后从中找到最大值

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

编辑

正如 Alma Do 所指出的,CAST to INT 在 Mysql 中不存在,而是它的等价物是 UNSIGNED。

这里不需要强制转换..

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

【讨论】:

  • 再次失败(CAST 在这里错误)。另外 - CASTINT 不存在
  • @AlmaDo 但是 WHERE 条件会因为正则表达式过滤掉这些值...
猜你喜欢
  • 2016-02-16
  • 1970-01-01
  • 1970-01-01
  • 2013-07-24
  • 2012-12-15
  • 2012-11-10
  • 2011-02-09
  • 2013-10-02
  • 1970-01-01
相关资源
最近更新 更多