创建数据库的时候,对某个字段定义了 NOT NULL,但是,在写入数据的时候,空字符串''
竟然也能写入成功。
有人能给我解释一下 NULL 和 NOT NULL 到底是什么意思呢?
黄舟2017-04-17 11:04:31
空 (NULL) 值表示數值未知。空值不同於空白或零值。沒有兩個相等的空值。比較兩個空值或將空值與任何其它數值相比均返回未知,這是因為每個空值均為未知。
在寫入數據的時候,空字符串'' 也是一個確定的值,所以就算你定義了 NOT NULL 也可以被寫入。
PHP中文网2017-04-17 11:04:31
以下是摘自 Oracle SQL Reference 的內容,供您參考。版本是 11g Release 2。
如果行中的列沒有值,則該列被稱為空值,或者包含空值。 Null 可以出現在不受 NOT NULL 或 PRIMARY KEY 完整性約束限製的任何數據類型的列中。當實際值未知或值沒有意義時,請使用 null。 Oracle 數據庫將長度為零的字符值視為空。但是,不要使用 null 來表示零數值,因為它們不等價。
注意:Oracle 數據庫目前將長度為零的字符值視為 null。但是,在未來的版本中,這種情況可能不會繼續存在,Oracle 建議您不要將空字符串與 null 相同。
任何包含 null 的算術表達式始終計算為 null。例如,null 加 10 就是 null。事實上,當給定 null 操作數時,所有運算符(除了串聯)都會返回 null。