Mysql 如何选择不是数字的行

Mysql 如何选择不是数字的行,mysql,select,numbers,where,Mysql,Select,Numbers,Where,如何在MySQL中选择不是数字的行 SELECT * FROM `TABLE` WHERE `Column_B` <> Number 选择* 从`表` 其中,`Column_B`编号 我知道,这是个愚蠢的问题,但我还没有找到解决办法。列B是varchar(3)。这是一种方法,使用mysql操作符(): 支持有符号/无符号整数、小数和科学记数法 注意:建议避免在实体名称中使用sql关键字,即使您用反勾号引用它们。试试这个SQLFIDLE 从表1中选择*,其中列不是REGE

如何在MySQL中选择不是数字的行

 SELECT * 
 FROM `TABLE`
 WHERE `Column_B` <> Number
选择*
从`表`
其中,`Column_B`编号

我知道,这是个愚蠢的问题,但我还没有找到解决办法。列B是varchar(3)。

这是一种方法,使用mysql操作符():

支持有符号/无符号整数、小数和科学记数法

注意:建议避免在实体名称中使用sql关键字,即使您用反勾号引用它们。

试试这个SQLFIDLE

从表1中选择*,其中列不是REGEXP'^[0-9]+$'


如果您想匹配实数而不是整数(
浮点数),则需要处理上述情况,以及模式介于0和1(即0.25)之间的情况,以及模式的小数部分为0的情况。(即2.0)。同时,我们将添加对整数前导零的支持(即005):


sql看起来像是从表1中选择*,其中列不是REGEXP“^0*[1-9][0-9]*(\[0-9]+)?”0+\[0-9]*[1-9][0-9]*$”

这同样适用于您

   SELECT col  FROM Table1 
  WHERE col NOT IN ( SELECT col FROM Table1
                   where CAST(col as DECIMAL(10,5)) !=0
                   or Col = '0' )

此regexp将捕获“000”,但不会捕获“3.141”或“1.23e-10”。谢谢michael。。现在我更新了我的答案,它也将捕获浮点。在编辑之前,已经支持前导零,但是stll缺少有符号的数字和科学符号。非常感谢您的帮助。最好的问候,PeterI不得不问。。。为什么要将数字存储在VARCHAR中?问题是。。选择不是数字的行。为什么选择数字。@radha使用非数字和小数编辑。感谢您的提示:)当输入字符串的数字后跟字符,如
1aa
3--
时,此操作将失败。
 ^0*[1-9][0-9]*(\.[0-9]+)?|0+\.[0-9]*[1-9][0-9]*$
   SELECT col  FROM Table1 
  WHERE col NOT IN ( SELECT col FROM Table1
                   where CAST(col as DECIMAL(10,5)) !=0
                   or Col = '0' )