oracle中的null处理的简单理解
来源:互联网 发布:redis 缓存整个数据库 编辑:程序博客网 时间:2024/05/16 09:17
最近在检查sql时碰到几次对null处理的问题,迷惑了我们写sql的思路。下面就我的理解和网上查到的资料,对null的操作做一个总结。
首先对oracle中的null做一些简单的说明:
1、oracle中null与0,空字符串,空格,包括null与null也是不等的。
2、oracle中对null做算术运算结果仍然为null。
3、处理方法有nvl函数,比较方法是is null或者is not null。
4、null不能被索引,比如select count(null) from dual的查询结果是0。
5、null排序比其他所有类型的大,一个可以为空的字段倒排序,前面的都是null数据。
下面举例说明:
1、
SQL> select 1 from dual where null=null;
未选定行
SQL> select 1 from dual where null='';
未选定行
SQL> select 1 from dual where null=0;
未选定行
SQL> select 1 from dual where ''='';
未选定行
以上4个查询中,大家可以看到null在oracle中可以理解为什么都没有的意思,它与任何对象都是不相等的。
2、
SQL> select 1+null from dual;
1+NULL
----------
SQL> select 1-null from dual;
1-NULL
----------
SQL> select 1*null from dual;
1*NULL
----------
SQL> select 1/null from dual;
1/NULL
----------
SQL> select 1 from dual where 1+null is null;
1
----------
1
SQL> select 1 from dual where 1-null is null;
1
----------
1
SQL> select 1 from dual where 1*null is null;
1
----------
1
SQL> select 1 from dual where 1/null is null;
1
----------
1
以上是null的加减乘除操作,可见null的加减乘除是null。
3、
SQL> select 1 from dual where null is null;
1
----------
1
SQL> select 1 from dual where '' is null;
1
----------
1
SQL> select 1 from dual where nvl(null,0) is not null;
1
----------
1
以上两个查询可以看出null的判断方法是is null,nvl是对null做处理的函数;而且,空字符串也被认为是null。
提示:null是不能被%匹配到的如select 1 from dual where null like '%'是查不到结果的。
4、
SQL> select count(null) from dual;
COUNT(NULL)
-----------
0
SQL> select count(nvl(null, 0)) from dual;
COUNT(NVL(NULL,0))
------------------
1
以上两个查询提醒大家在统计的时候注意根据自己的需要处理null字段的问题。
其他说明:
根据oracle中null的定义,null为未知,不等于null,因此在表中的唯一字段中存在多个null是不会违反唯一行约束的。
- oracle中的null处理的简单理解
- oracle中的null处理的简单理解
- oracle中的null处理的简单理解
- Oracle 数据库唯一约束中的NULL的处理
- Oracle 数据库唯一约束中的NULL的处理
- oracle中null的理解
- Oracle中null的处理
- Oracle中null的处理
- SQL中的NULL的处理
- Oracle null的理解(转)
- oracle 对null值的处理
- oracle 排序(中文,null的处理)
- oracle 排序(中文,null的处理)
- oracle中对null值的处理
- Oracle空串与null的处理
- oracle null值处理
- Oracle数据库中的''与NULL的关系
- FreeMarker中的null处理
- Java内部类总结
- [OpenCV]拓展图像边界
- 如何理解闭包
- 在Oracle中使用rank()over()排名的问题
- 京东零售测试之白盒测试实践
- oracle中的null处理的简单理解
- Android LinearLayout和RelativeLayout
- [Phonegap+Sencha Touch] 移动开发71 Sencha项目开发、调试方法建议
- Eclipse Plugins' links
- 在福企的半年
- edX Fullstack管理命令 以Cypress版本
- collectionView的用法
- 通过偏移将GPS坐标转换成百度坐标--服务端实现
- GCD使用三部曲之:基本用法