我在MySQL中看到有Cast()
和Convert()
函数从值创建整数,但有没有办法检查一个值是否为整数?is_int()
我正在寻找像PHP这样的东西.
我假设您要检查字符串值.一个很好的方法是REGEXP运算符,将字符串与正则表达式匹配.简单地做
select field from table where field REGEXP '^-?[0-9]+$';
这个速度相当快.如果您的字段是数字,只需测试
ceil(field) = field
代替.
将其与正则表达式匹配.
参见http://forums.mysql.com/read.php?60,1907,38488#msg-38488,如下所述:
Re:MySQL中的IsNumeric()子句?
发布者:kevinclark()
日期:2005年8月8日01:01 PM
我同意.这是我为MySQL 5创建的一个函数:
CREATE FUNCTION IsNumeric (sIn varchar(1024)) RETURNS tinyint RETURN sIn REGEXP '^(-|\\+){0,1}([0-9]+\\.[0-9]*|[0-9]*\\.[0-9]+|[0-9]+)$';
这允许在开头有一个可选的加号/减号,一个可选的小数点和其余的数字.
假设我们的字段包含字母数字字段,其中包含条目
a41q 1458 xwe8 1475 asde 9582 . . . . . qe84
并且您希望此db列中的最高数值(在本例中为9582),那么此查询将帮助您
SELECT Max(column_name) from table_name where column_name REGEXP '^[0-9]+$'
假设数据类型为varchar,这是一个简单的解决方案
select * from calender where year > 0
如果年份为数字,则返回true,否则返回false
这也有效:
CAST( coulmn_value AS UNSIGNED ) // will return 0 if not numeric string.
例如
SELECT CAST('a123' AS UNSIGNED) // returns 0 SELECT CAST('123' AS UNSIGNED) // returns 123 i.e. > 0