2015-08-22 37 views
0

我有表(Oracle)的數字字段如下NUMBER(10,2)不等於您在甲骨文

TEST_HOURS NUMBER(10,2) 

當我嘗試以下SQL它不工作

select t.test_hours from test_hours t where 
where (t.test_hours != 1 or t.test_hours is not null) 
and t.id = 11 

當我刪除這(t.test_hours != 1 or t.test_hours != null)它工作正常,但是當我包括上述行然後它不提取數據,並沒有error

有人可以幫我解決這個問題。

感謝

+1

這種情況似乎毫無意義,即't.test_hours!= 1或t.test_hours!= null'。你想要得到什麼? –

+1

您無法與'null'做比較。始終使用'is null'或'not null'。 –

+0

@vkp試過的不是空的,它沒有幫助 – SAR

回答

1

我想你想,不

select t.test_hours 
from test_hours t 
where (t.test_hours <> 1 and t.test_hours is not null) and t.id = 11 

順便說一句,在比較NULL是不必要的,因爲它會失敗。因此,一個簡單的版本是:

select t.test_hours 
from test_hours t 
where t.test_hours <> 1 and t.id = 11 
2

正如葉戈爾的評論指出,您的問題列條件已經沒有任何意義。此外,您應該使用IS NOT NULLIS NULL,而不是!=。當您使用!=,並且左側的內容爲空時,結果將等於NULL,而不是TRUEFALSE

即使是IS NOT NULL,你的條件是無效的,因爲條件將永遠是TRUEtest_hours等於1,這是因爲:

test_hours != 1 FALSE 
OR 
test_hours IS NOT NULL TRUE 

因此結果將是TRUE。

您可能想要使用不同的條件。