如何选择非数字的行

时间:2014-05-25 09:14:20

标签: mysql select numbers where

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

 SELECT * 
 FROM `TABLE`
 WHERE `Column_B` <> Number

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

3 个答案:

答案 0 :(得分:2)

试试这个sqlfiddle ..

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

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


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

 ^0*[1-9][0-9]*(\.[0-9]+)?|0+\.[0-9]*[1-9][0-9]*$

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

答案 1 :(得分:0)

这是使用mysql regexp运算符(fiddle)执行此操作的一种方法:

SELECT * FROM `TABLE`
WHERE `Column_B` NOT REGEXP '^-?[0-9]*\\.?[0-9]+([Ee][+-][0-9]+)?$';

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

注意:建议避免对实体名称使用sql关键字,即使用反引号引用它们也是如此。

答案 2 :(得分:-1)

这也适合你

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

DEMO