我正在尝试用以下内容查询数据库:
select q.column1, q.column2
from table q
where q.column1 <> 0.00
但结果返回0.00。该列包含数值。我试过'不是',&lt;&gt;和!=但似乎没有任何效果。
答案 0 :(得分:1)
column1
是否有approximate numeric data type?与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
的行已存在:)
答案 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