1

次のようなものでデータベースにクエリを実行しようとしています:

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

しかし、結果は 0.00 を返しています。列には数値が含まれています。「ではない」、<>、および != を試しましたが、何も機能していないようです。

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 に答える