我正在尝试使用以下内容查询数据库:
select q.column1, q.column2
from table q
where q.column1 <> 0.00
但结果返回 0.00。该列包含数值。我尝试过'is not'、<> 和!=,但似乎没有任何效果。
我正在尝试使用以下内容查询数据库:
select q.column1, q.column2
from table q
where q.column1 <> 0.00
但结果返回 0.00。该列包含数值。我尝试过'is not'、<> 和!=,但似乎没有任何效果。
是否column1
有近似的数字数据类型?喜欢float
或real
。
如果是这样,则这些数据类型不准确。=
处理近似数时应避免使用等式运算符。
更好的方法是检查近似数字是否接近您要查找的数字。您可以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
:)
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