从本质上区别:
1、空值不占空间
2、NULL值占空间
3、和一般varchar 类型的值没有区别
检索空值:
SELECT * FROM test
WHERE col1 = ‘’
检索NULL值:
SELECT * FROM test
WHERE col1 IS NULL
检索NOT NULL值:
SELECT * FROM test
WHERE col1 IS NOT NULL
注意:’‘不是null,所以not null会把’'都算进去
检索非空值:
SELECT * FROM test
WHERE col2<>’’
注意:<>’’,会同时排除’'和null的数据,只检索有内容的数据,包括值为0的也会排除掉。
1、不为空
Select * From table Where id<>’’
Select * From table Where id!=’’
总结:
- null的存储不是’’,是其它特殊的字符表示。
- null在检索<>’'的时候,也会被排除,因为没有真正有意义的内容
- not null严格按照字面意思,’'不会被排除。
- 定义not null的字段,可以插入’’
- 字符串"null" 就是一般的字符串使用
参考:https://blog.csdn.net/lwg_1540652358/article/details/82258695