MySQL中NULL与空值的区别
昨天在工作时,出现一个问题:数据库中建表某个字段规定为NOT NULL
的,但是插入的相应字段的字符串为""
时候,直接插入数据库中,而没有禁止插入。
在网上查了一下,发现在MySQL中,NULL
(空)与 ""
意义并不相同:
StackOverFlow.com上相关问题 “MySQL, better to insert NULL or empty string?” 高票答案:
使用
NULL
可以区分“没有输入数据”和“输入空数据”, 差异在于:NULL
的长度就是NULL
,空字符串的长度为0
- 一串
NULL
数据比空字符串优先排序 COUNT(message)
会将空字符串计数进去,但是不会将NULL
数据们计入可以使用绑定变量搜索某个空字符串,但是不可以这样搜索
NULL
,例如:SELECT *
FROM mytable
WHERE mytext = ?mytext永远不可能匹配
NULL
值,无论你从客户端如何传值。匹配NULL
的方法只能这样查询:SELECT *
FROM mytable
WHERE mytext IS NULL
-
- 测试
NULL
需要用IS NULL
或者IS NOT NULL
;=
,<>
,<
,>
等与NULL
的计算比较,结果仍然为NULL
- MySQL中,
0
或NULL
表示假,任何其他的值表示真。默认布尔操作的真值为1
- 在
GROUP BY
操作中,两个NULL
被认为是相等的;并且NULL
值在ORDER BY ... ASC
中第一个显示,而在DESC
中则是最后一个
+
- 测试
Tech Note
MySQL
数据库
Database