是否有一种方法来检测一个值在MySQL查询中是否是一个数字?如

SELECT * 
FROM myTable 
WHERE isANumber(col1) = true

当前回答

你也可以使用正则表达式…就像:

SELECT * FROM myTable WHERE col1 REGEXP '^[0-9]+$';

参考: http://dev.mysql.com/doc/refman/5.1/en/regexp.html

其他回答

在我的计算机上,另一个似乎比REGEXP更快的替代方法是

SELECT * FROM myTable WHERE col1*0 != col1;

这将选择col1以数值开头的所有行。

如果你的数据是" test " " test0 " " test1111 " " 111test " " 111 "

选择所有数据类型为简单整型的记录:

SELECT * 
FROM myTable 
WHERE col1 REGEXP '^[0-9]+$';

结果:‘111’

(在正则表达式中,^表示开始,$表示结束)

使用实例选择存在整数或十进制数的所有记录。

SELECT * 
FROM myTable 
WHERE col1 REGEXP '^[0-9]+\\.?[0-9]*$'; - for 123.12

结果:'111'(与上一个示例相同)

最后,要选择number存在的所有记录,使用以下命令:

SELECT * 
FROM myTable 
WHERE col1 REGEXP '[0-9]+';

结果:'test0'和'test1111'和'111test'和'111'

您可以使用正则表达式的mor细节https://dev.mysql.com/doc/refman/8.0/en/regexp.html

我用这个^([,|.]?[0-9])+$。这个函数允许对小数和浮点数进行句柄处理

SELECT
    *
FROM
    mytable
WHERE
    myTextField REGEXP "^([,|.]?[0-9])+$"

尝试除法/1

select if(value/1>0 or value=0,'its a number', 'its not a number') from table

这个答案与Dmitry类似,但它允许小数以及正数和负数。

select * from table where col1 REGEXP '^[[:digit:]]+$'