1

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

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

但结果返回 0.00。该列包含数值。我尝试过'is not'、<> 和!=,但似乎没有任何效果。

4

2 回答 2

1

是否column1近似的数字数据类型?喜欢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:)

于 2013-10-21T19:18:26.867 回答
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
于 2013-10-21T19:06:13.907 回答