如何检查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)

此逻辑对于float也同样适用。

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

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)

   -> );

将记录插入表中。

mysql> insert into CheckingIntegerDemo values('John123456');

mysql>  insert into CheckingIntegerDemo values('123456');

mysql> insert into CheckingIntegerDemo values('123.456');

显示所有记录。

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)

以上是 如何检查MySQL中的值是否为整数? 的全部内容, 来源链接: utcz.com/z/355667.html

回到顶部