2
我有一個MySQL表,其字段進來組,規則是每行只有一個組正在使用,並且所有(且只有)該組的字段都是非空的。爲什麼(x IS NULL!= y IS NULL)在MySQL中需要額外的括號?
要明確,讓我們來看看其中的一些領域
x_encrypted
x_hashed
y_encrypted
y_hashed
我有信號故障觸發的,如果你插入一個不良記錄。其中一項支票是這樣的
IF (x_encrypted IS NULL != x_hashed IS NULL) ... error
即即x既加密又散列,或者它不存在。
在觸發錯誤的情況下,兩個x_encrypted IS NULL AND x_hashed IS NULL
。解決方法是重新編寫它像這樣,有額外的括號:
IF ((x_encrypted IS NULL) != (x_hashed IS NULL)) ... error
爲什麼這些額外的支架需要?我看不出這會如何在語法上模糊不清。我擔心有一個陷阱等待着我,我在其他地方也有類似的與NULL相關的檢查,我不再相信。