如何选择非数字行

Pet*_*ter 2 mysql select numbers where-clause

如何在 MySQL 中选择非数字的行?

 SELECT * 
 FROM `TABLE`
 WHERE `Column_B` <> Number
Run Code Online (Sandbox Code Playgroud)

我知道,这是一个愚蠢的问题,但我还没有找到解决方案。Column_B 是 varchar(3)。

Nis*_*sar 7

试试这个sqlfiddle..

http://sqlfiddle.com/#!2/17f28/1

SELECT * FROM Table1 WHERE col NOT REGEXP '^[0-9]+$'


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

 ^0*[1-9][0-9]*(\.[0-9]+)?|0+\.[0-9]*[1-9][0-9]*$
Run Code Online (Sandbox Code Playgroud)

sql 看起来像SELECT * FROM Table1 WHERE col NOT REGEXP '^0*[1-9][0-9]*(\.[0-9]+)?|0+\.[0-9]*[1-9][0-9]*$'

  • 此正则表达式将捕获“000”,但不会捕获“3.141”或“1.23e-10”。 (3认同)