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