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


要检查给定值是否为字符串,我们使用cast()函数。如果值不是数值,则返回0,否则返回数值。通过这种方式,我们可以检查值是否为整数。

案例1 - 检查包含整数的字符串

mysql> select cast('John123456' AS UNSIGNED);

以下是输出结果。它显示该值不是数值,因此返回0。

+--------------------------------+
| cast('John123456' AS UNSIGNED) |
+--------------------------------+
|                              0 |
+--------------------------------+
1 row in set, 1 warning (0.00 sec)

案例2 - 只检查整数值

mysql> select cast('123456' AS UNSIGNED);

以下是输出结果。它显示该值是数值,因此返回该值本身。

+----------------------------+
| cast('123456' AS UNSIGNED) |
+----------------------------+
|                     123456 |
+----------------------------+
1 row in set (0.00 sec)

此逻辑也适用于浮点数。

以下是带有浮点值的查询。

mysql>  SELECT CAST('78.90' AS UNSIGNED);

以下是输出结果。

+---------------------------+
| CAST('78.90' AS UNSIGNED) |
+---------------------------+
|                        78 |
+---------------------------+
1 row in set, 1 warning (0.00 sec)

使用正则运算符的替代逻辑

它适用于任何值的任何条件,甚至浮点数。

让我们创建一个新表。

mysql> create table CheckingIntegerDemo
   -> (
   -> Value varchar(200)
   -> );
Query OK, 0 rows affected (0.88 sec)

将记录插入表中。

mysql> insert into CheckingIntegerDemo values('John123456');
Query OK, 1 row affected (0.10 sec)

mysql>  insert into CheckingIntegerDemo values('123456');
Query OK, 1 row affected (0.16 sec)

mysql> insert into CheckingIntegerDemo values('123.456');
Query OK, 1 row affected (0.16 sec)

显示所有记录。

mysql> select *from CheckingIntegerDemo;

以下是输出结果。

+------------+
| Value      |
+------------+
| John123456 |
| 123456     |
| 123.456    |
+------------+
3 rows in set (0.00 sec

在上面的输出中,只有123456是整数,其余都不是。

检查值是否为整数的语法。

select yourColumnName from yourTableName where yourColumnName REGEXP '^-?[0-9]+$';

我们使用正则表达式的查询。这将只输出整数值。

mysql> select Value from CheckingIntegerDemo where Value REGEXP '^-?[0-9]+$';

以下是输出结果。

+--------+
| Value  |
+--------+
| 123456 |
+--------+
1 row in set (0.00 sec)

更新于:2019年7月30日

12K+ 次浏览

启动你的职业生涯

完成课程获得认证

开始学习
广告