SQL查询不等于0.00

时间:2013-10-21 18:55:55

标签: sql sql-server select where

我正在尝试用以下内容查询数据库:

select q.column1, q.column2 
from table q
where q.column1 <> 0.00 

但结果返回0.00。该列包含数值。我试过'不是',&lt;&gt;和!=但似乎没有任何效果。

2 个答案:

答案 0 :(得分:1)

column1是否有approximate numeric data type?与floatreal一样。

如果是这样,那些数据类型并不准确。在处理近似数字时,应避免使用等于=运算符。

更好的方法是检查近似数字是否接近您要查找的数字。您可以使用abs([TargetValue] - [YourColumn]) < [SmallNumber]

where abs(0 - q.column1) < 0.0001

出错的一个例子:

create table t1 (descr varchar(max), nr float);
insert t1 values 
    ('1E-307', 1E-307),
    ('1E-308', 1E-308),
    ('0', 0);

select * from t1 where nr = 0

打印

descr    nr
1E-308   0
0        0

1E-307的行已丢失,但1E-308的行已存在:)

答案 1 :(得分:0)

SELECT A.column1, A.column2 
FROM (SELECT CAST(q.column1 AS DECIMAL(10,2)) AS column1 ,
             CAST(q.column2 AS DECIMAL(10,2)) AS column2 
      FROM [table] q) A
WHERE A.column1 <> 0.00