Yad*_*ada 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 |
+---------------------------+
Run Code Online (Sandbox Code Playgroud)
至于节省空间,它取决于定义列的数据类型.
小智 5
存储空间不应该是您的关注点.相反,你应该关注NULL的语义.假设我家里有一块你生前从未见过的玻璃杯.如果我问你玻璃杯里有多少水,你就无法给出有效答案.事实是你不知道.现在,如果我拿到玻璃杯并告诉你里面没有水,那么你给我的答案就是"没有".NULL是"我不知道答案",空字符串是"我知道,答案是空字符串".
使用 NULL 有充分的理由,但节省行存储空间并不是其中之一。如果您想要 \xe2\x80\x98 不知道\xe2\x80\x99 占位符,请使用 NULL;如果您只想存储一个行为类似于空字符串的空字符串,请继续存储一个空字符串。如果它是 VARCHAR 列(很可能会是),那么它几乎不会占用太多空间。
\n