使用SQL中的UPDATE關鍵字更新多個欄位值時,SET後面的更新欄位應該使用逗號而不能用AND。雖然用AND不會報錯,但會使更新結果錯誤,下面我將通過場景來分析當我們使用AND時SQL的執行過程和為什麼更新結果只會是0/1/NULL;
場景示例
以下是場景更新前的原始查詢資料如下:
更新場景1
更新場景2
更新場景3
更新場景4
更新場景5
更新場景6
問題發現
為什麼結果都為0或者為1或者為Null呢?是不是有什麼規律?
總結分析
涉及到兩個知識點
(1)當我們SET後使用AND而不是逗號時,第一個“=”前的欄位的取值取自“=”後的邏輯運算的結果。我們拿場景1為例子:
(2)SQL中的空值(NULL)
SQL 中的空值( NULL )是一個特殊的值,代表了缺失/未知的資料或者不適用的情況。對於大多數的程式語言而言,邏輯運算的結果只有兩種情況:真( Ture )或者假( False )。但是對於 SQL 而言,邏輯運算結果存在三種情況:真、假或者未知( Unknown )。對於 SQL 查詢中的 WHERE 條件,只有結果為真的資料才會返回,結果為假或者未知都不會返回。因此, SQL 中的邏輯運算子 AND 、 OR 以及 NOT 的結果也存在三種情況。
AND 操作符的邏輯真值表如下:
其餘的邏輯運算與null的結果請自行查閱相關文章。
希望本文章對您有幫助,您的轉發、點贊是我的創作動力,十分感謝。
掃描下方二維碼關注微信公眾號,您會收到更多優質文章推送。