mysql中NULL和Empty有什么区别

时间:2009-12-03 15:16:04

标签: mysql

Mysql中NULL和空字符串有什么区别?

需要多少存储空间?

例如。

在用户表

name:NULL - 占用多少空间

电话: - 它占用多少空间

3 个答案:

答案 0 :(得分:20)

考虑NULL的最佳方法是它有毒。

使用NULL完成的任何操作都将产生NULL。

NULL +任何数字类型为null。 NULL concat任何字符串都为null。

空字符串是长度为0的字符串。

示例:

mysql> select concat('hello world', null);
+-----------------------------+
| concat('hello world', null) |
+-----------------------------+
| NULL                        |
+-----------------------------+

mysql> select concat('hello world', '');
+---------------------------+
| concat('hello world', '') |
+---------------------------+
| hello world               |
+---------------------------+

至于空间节省,它取决于列定义的数据类型。

答案 1 :(得分:5)

存储空间不应该与此有关。相反,你应该关注NULL的语义。假设我家里有一块你生前从未见过的玻璃杯。如果我问你玻璃杯里有多少水,你就无法给出有效答案。事实是你不知道。现在,如果我拿到玻璃杯并告诉你里面没有水,那么你给我的答案就是“没有”。 NULL是“我不知道答案”,空字符串是“我知道,答案是空字符串”。

答案 2 :(得分:4)

使用NULL有正当理由,但在行存储中节省空间不是一个。如果你想要'不知道'占位符使用NULL;如果您只想存储一个行为空字符串的空字符串,请继续并存储空字符串。如果它是一个VARCHAR列(它可能会是这样),那么它几乎没有占用太多空间。