目录
问题现象:
今天在项目中思考了一个问题:
如何在sql中判断一个字段是否为 null值?是否为 空串 呢?
问题分析:
需要注意的是: null值 和 空串 并不是同一个概念!!!!!!
null值 就是这个字段没有赋值,也就是java中常说的 null ;
空串 是指这个字段有赋值, 只是该值是一个 空字符串, 也就是java中常说的 空串 .
既然明白了 这两者的区别之后,那就要给大家介绍一下,如何在sql中判断某个字段 时候为 null 或 空串 了!
在postgresql数据库、MySQL数据库中, 我们都知道 null值 的字段会显示为 (NULL) ; 而 空串 的字段 则显示为空白(双击该值后,会发现没有任何内容);
1、判断 null值:
在sql中可以通过 IS NUll 和 IS NOT NULL 来判断一个字段的值是否为 null值;
2、判断 空串:
在sql之中可以用 '' 或 length() = 0 来表示空串。
3、判断 空串和null值:
需要把上面提到的1、2、结合起来才能判断出这个条件。
解决方法:
1、判断 null值:
//查询id为 null值 的记录
Select * From table Where IS NULL(id);
Select * From table Where id IS NULL;
//查询id不为 null值 的记录(即查询有数据的记录,包括空串)
Select * From table Where IS NOT NULL(id);
Select * From table Where id IS NOT NULL;
2、判断 空串:
//查询id为 空串 的记录
Select * From table Where id = '';
Select * From table Where length(id) = 0;
//查询id不为 空串 的记录(即查询有数据且不为空串的记录)
Select * From table Where id <> '';
Select * From table Where id != '';
Select * From table Where length(id) != 0;
Select * From table Where length(id) > 0;
//上面的sql其实相当于还加了个隐式条件即(id IS NOT NULL),即
Select * From table Where id <> '' and id IS NOT NULL;
Select * From table Where id != '' and id IS NOT NULL;
Select * From table Where length(id) != 0 and id IS NOT NULL;
Select * From table Where length(id) > 0 and id IS NOT NULL;
3、判断 空串和null值:
//查询id为 空串 和 null 的记录
Select * From table Where id = '' OR id ISNULL;
Select * From table Where length(id) = 0 OR id ISNULL;