SQL語句中布爾表達式不可忽視的部分
作者:佚名
我們寫SQL語句有時,總是希望SQL表達式能夠返回TRUE或者FALSE,卻常常忽略了第三個值UNKNOWN。下面就將做一個小測試,看看會有什么問題。
寫SQL語句時,布爾表達式中的第三個值UNKNOWN往往被我們所忽視,但是這其實是很關鍵的,下文將帶您做一個測試,說明這個問題。
我們寫SQL語句有時,總是希望SQL表達式能夠返回TRUE或者FALSE,卻常常忽略了第三個值UNKNOWN。由于不注意判斷返回的值有時會導致錯誤的結果, UNKNOWN與TRUE和FALSE做AND、OR運算返回的結果有一些差異。
來看一個小小的測試:
1.AND操作
AND
|
TRUE
|
FALSE
|
UNK
|
TRUE
|
|
|
|
FALSE
|
|
|
|
UNK
|
|
|
|
2.OR操作
OR
|
TRUE
|
FALSE
|
UNK
|
TRUE
|
|
|
|
FALSE
|
|
|
|
UNK
|
|
|
|
如果你已經有了答案,不妨跟微軟工程師們給出的答案對照一下吧:
AND
|
TRUE
|
FALSE
|
UNK
|
TRUE
|
TRUE
|
FALSE
|
UNK
|
FALSE
|
FALSE
|
FALSE
|
FALSE
|
UNK
|
UNK
|
FALSE
|
UNK
|
OR
|
TRUE
|
FALSE
|
UNK
|
TRUE
|
TRUE
|
TRUE
|
TRUE
|
FALSE
|
TRUE
|
FALSE
|
UNK
|
UNK
|
TRUE
|
UNK
|
UNK
|
【編輯推薦】
責任編輯:段燃
來源:
互聯網