如何在 MySQL 中检查某个值是否为整数?
mysqlmysqli database
要检查给定的值是否为字符串,我们使用 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)