次のようなものでデータベースにクエリを実行しようとしています:
select q.column1, q.column2
from table q
where q.column1 <> 0.00
しかし、結果は 0.00 を返しています。列には数値が含まれています。「ではない」、<>、および != を試しましたが、何も機能していないようです。
次のようなものでデータベースにクエリを実行しようとしています:
select q.column1, q.column2
from table q
where q.column1 <> 0.00
しかし、結果は 0.00 を返しています。列には数値が含まれています。「ではない」、<>、および != を試しましたが、何も機能していないようです。
近似数値データ型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
は存在します:)