是否有一种方法来检测一个值在MySQL查询中是否是一个数字?如
SELECT *
FROM myTable
WHERE isANumber(col1) = true
是否有一种方法来检测一个值在MySQL查询中是否是一个数字?如
SELECT *
FROM myTable
WHERE isANumber(col1) = true
当前回答
这个答案与Dmitry类似,但它允许小数以及正数和负数。
select * from table where col1 REGEXP '^[[:digit:]]+$'
其他回答
我发现这很有效
if(col1/col1= 1,'number',col1) AS myInfo
在我的计算机上,另一个似乎比REGEXP更快的替代方法是
SELECT * FROM myTable WHERE col1*0 != col1;
这将选择col1以数值开头的所有行。
我建议:如果你的搜索很简单,你可以使用'
column*1 = column
' operator interesting:)是工作,并且比varchar/char字段更快
SELECT * FROM myTable WHERE column = 1;
ABC*1 => 0 (NOT EQU **ABC**)
AB15*A => 15 (NOT EQU **AB15**)
15AB => 15 (NOT EQU **15AB**)
15 => 15 (EQUALS TRUE **15**)
这在大多数情况下都是可行的。
SELECT * FROM myTable WHERE concat('',col1 * 1) = col1
不适合非标准的数字,比如
1 e4 1.2 e5 123. (落后于小数)
你可以使用CAST
SELECT * from tbl where col1 = concat(cast(col1 as decimal), "")