当前位置:  开发笔记 > 编程语言 > 正文

如何检查MySQL中的值是否为整数?

如何解决《如何检查MySQL中的值是否为整数?》经验,为你挑选了5个好方法。

我在MySQL中看到有Cast()Convert()函数从值创建整数,但有没有办法检查一个值是否为整数?is_int()我正在寻找像PHP这样的东西.



1> 小智..:

我假设您要检查字符串值.一个很好的方法是REGEXP运算符,将字符串与正则表达式匹配.简单地做

select field from table where field REGEXP '^-?[0-9]+$';

这个速度相当快.如果您的字段是数字,只需测试

ceil(field) = field

代替.


'ceil(field)= field'测试是一个不错的主意,但正如@Jumpy指出的那样,它在非数字数据上失败:SELECT ceil('four')='four'; - > 1
@MatthewCornell,他说如果你的领域是数字.这样你可以测试一个数字是否是一个整数.它不适用于字符串,这就是第一个选项存在的原因.

2> JBB..:

将其与正则表达式匹配.

参见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]+)$';


这允许在开头有一个可选的加号/减号,一个可选的小数点和其余的数字.



3> 小智..:

假设我们的字段包含字母数字字段,其中包含条目

a41q
1458
xwe8
1475
asde
9582
.
.
.
.
.
qe84

并且您希望此db列中的最高数值(在本例中为9582),那么此查询将帮助您

SELECT Max(column_name) from table_name where column_name REGEXP '^[0-9]+$'



4> Jayjitraj..:

假设数据类型为varchar,这是一个简单的解决方案

select * from calender where year > 0

如果年份为数字,则返回true,否则返回false


在varchar中,如果第一个字符是数字,则它也将返回true.

5> Riad..:

这也有效:

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


怎么样`SELECT CAST('12a34'AS UNSIGNED)`,返回`12`?
推荐阅读
LEEstarmmmmm
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有