我想查詢數據庫的東西,如:SQL查詢不等於0.00
select q.column1, q.column2
from table q
where q.column1 <> 0.00
但結果返回0.00。該列包含數字值。我試過'不是',<>和!=但似乎沒有任何工作。
我想查詢數據庫的東西,如:SQL查詢不等於0.00
select q.column1, q.column2
from table q
where q.column1 <> 0.00
但結果返回0.00。該列包含數字值。我試過'不是',<>和!=但似乎沒有任何工作。
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
謝謝。我使用了CAST並能夠獲得更好的結果,儘管這並沒有消除所有的0.00。 – user2904454
是否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
行是目前:)
Column1是(numeric(10,2),null) 我不知道它是否是一個近似的數字數據類型。我怎麼能找到這個? – user2904454
'數字'是一個確切的數據類型。你能在http://sqlfiddle.com重現這個問題嗎? – Andomar
它可能是一個舍入問題? –
什麼數據類型是'column1'的? – peterm
你可以把'0'而不是'0.00'嗎? –