2011-08-04 160 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表单中的参数“撰写”更新,则最终会插入空字符串而不是空值。 –

相关问题