2011-08-04 161 views
3

我有一個PHP/MySQL應用程序,在某些情況下將「空白」值存儲爲''(空字符串),而在其他情況下存儲爲NULL s。在MySQL數據庫中存儲空字符串與空值?

有這種混合格式肯定會導致比較時出現問題,所以我想知道哪一個更好的存儲機制? ''NULL

+0

AFAIK,與NULL的比較比空字符串的比較快。 – Eimantas

+0

http://stackoverflow.com/questions/6638291/standard-use-of-z-instead-of-null-to-represent-missing-data –

+0

感謝@Damir的參考 - 不能想象這樣做!很嚇人! – siliconpi

回答

5

雖然這是混亂的,其實你應該存儲空了幾個原因:

  1. 檢查,對空通常比檢查大多數數據庫空字符串更快
  2. 空常用的意思是「我不t知道「,空字符串意味着」我知道:它是空的「。它給你更好的語義。
+0

當寫入數據庫時​​,如果沒有字段的內容,我不應該將它保存爲NULL? – siliconpi

+0

是的,如果它指示未知或不可知的值,那麼不是NULL。例如,如果您將我的「完整」名稱輸入到數據庫中,那麼您可以用於我中間名的唯一值可能是NULL。我知道描述我中間名的字符串是''還是'勞倫斯'。想象一個空字符串,如0,一個定義值,其中的值不爲空,NULL爲'不知道'或'無法知道' – Karl

+0

是的,但是如果您例如從HTML表單獲取數據,用戶未填寫,通常會發送空字符串。如果您不檢查它,並直接使用HTML表單中的參數「撰寫」更新,則最終會插入空字符串而不是空值。 –

相關問題