2012-05-31 180 views
0

我有以下SQL語句:「使用NOT否定表達」SQL和NOT和和等價

AND NOT (wo.ci_cnc_date IS NOT NULL AND p.prioid != '1 - Routine') 

的MSDN聲明

,如果這是真的話,那麼將上面的語句是等價的:

AND (wo.ci_cnc_date IS NULL AND p.prioid == '1 - Routine') 
+2

SQL平等運算符是'='不''== @ –

+0

a_horse_with_no_name:是的,你是對的。謝謝。 –

回答

5

號這將相當於:

AND (wo.ci_cnc_date IS NULL OR p.prioid == '1 - Routine')  
+0

@ Gordon Linoff:是的,你說得對。自今早以來,我一直在翻譯SQL語句,並且我認爲我的大腦已經變成了一種可能:)謝謝你的幫助。 –

4

德·摩根定律:否定合取和析。 Wiki

+1

+1,德摩根法則 –

3

這將相當於:

AND (NOT wo.ci_cnc_date IS NOT NULL OR p.prioid = '1 - Routine') 

注意x IS NOT NULLx IS NULL是,一般來說,不同的運營商來說,一個不被對方的否定。

PostgreSQL,既(1, NULL) IS NULL(1, NULL) IS NOT NULL產量FALSE(見fiddle

+0

有趣。有點類似於A = B' /'A <> B'的三元邏輯,其中任何一方都可以是NULL(只有在這種情況下,結果不是NULL/UNKNOWN,但由於某種原因FALSE)。 –

+0

@AndriyM:'IS NULL'和'IS NOT NULL'都不返回NULL。關鍵是'不是空'和'不是空'是不同的東西。 – Quassnoi