在 SQL Server 中,空值和空字符串('')是有区别的:
- None:在编程语言中,如 Python,None 表示空无一物,啥也没有存储。None 不是整型,不是浮点型,也不是字符串,就是一个 NoneType¹。
- Null:在数据库查询中用 Null,表示的含义相同,表示什么也没有,是个空值,不是空字符串¹。Null 在 SQL 是一种不确定的值,可以认为系统也不知道这个值是什么,所以不管用 = 还是 != 都是会把 null 过滤掉的²。
- 空字符串(''):有存储个东西,是空字符串,空字符串有哪些特征呢?长度为 0,类型为 string¹。空字符串可以认为是一个确定的值,值就是空²。
在 SQL 中,如果你想要筛选出非空的记录,你可以使用 IS NOT NULL
,例如:SELECT * FROM table WHERE column IS NOT NULL;
。如果你想要筛选出空字符串的记录,你可以使用 = ''
,例如:SELECT * FROM table WHERE column = '';
。这样,你就可以区分空值和空字符串了。¹²
2023/11/21
(1) None、Null与空字符‘‘什么区别_null和none-CSDN博客. https://blog.csdn.net/fwj_ntu/article/details/106100717.
(2) 为什么SQL中的where条件 !='' (不等于空字符串) 会把NULL值也过滤掉? - 知乎. https://www.zhihu.com/question/472023696.
(3) SQLSERVER NULL和空字符串的区别 使用NULL是否节省空间 - 那个远方 - 博客园. https://www.cnblogs.com/ljs-13/p/12163360.html.