`
libin0019
  • 浏览: 234473 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

Oracle排序中NULL值处理的五种常用方法

阅读更多

引自:

http://www.cnblogs.com/ethanwooblog/archive/2009/04/03/2092704.html

 

1、缺省处理
 
Oracle在Order by 时缺省认为null是最大值,所以如果是ASC升序则排在最后,DESC降序则排在最前
2、使用nvl函数
 
nvl函数可以将输入参数为空时转换为一特定值,如
nvl(employee_name,’张三’)表示当employee_name为空时则返回’张三’,如果不为空则返回employee_name
通过这个函数可以定制null的排序位置。
3、使用decode函数
 
decode函数比nvl函数更强大,同样它也可以将输入参数为空时转换为一特定值,如
decode(employee_name,null,’张三’, employee_name)表示当employee_name为空时则返回’张三’,如果不为空则返回employee_name
通过这个函数可以定制null的排序位置。
4、使用case 语法
 
Case语法是Oracle 9i后开始支持的,是一个比较灵活的语法,同样在排序中也可以应用
如:
select *
 
from employee
 
order by  (case employee_name
            
when null then
             
'张三'
            
else
             
employee_name
          
end)
表示当employee_name为空时则返回’张三’,如果不为空则返回employee_name
通过case语法同样可以定制null的排序位置。
 
5、使用nulls first 或者nulls last 语法
 
Nulls first和nulls last是Oracle Order by支持的语法
如果Order by 中指定了表达式Nulls first则表示null值的记录将排在最前(不管是asc 还是 desc)
如果Order by 中指定了表达式Nulls last则表示null值的记录将排在最后 (不管是asc 还是 desc)
使用语法如下:
--将nulls始终放在最前
select * from zl_cbqc order by cb_ld nulls first
 
--将nulls始终放在最后
select * from zl_cbqc order by cb_ld desc nulls last
分享到:
评论

相关推荐

    最全的oracle常用命令大全.txt

    下面按类别列出一些ORACLE用户常用数据字典的查询使用方法。 1、用户 查看当前用户的缺省表空间 SQL>select username,default_tablespace from user_users; 查看当前用户的角色 SQL>select * from user_...

    Oracle数据库、SQL

    5.3 null值在排序中显示 10 5.4 order by后面可以跟什么 10 5.5多列排序 10 六、 单行函数的使用 11 6.1数值类型 11 6.2日期类型 11 6.3字符类型 13 6.4转换函数 14 6.5其他注意事项 14 七、 SQL语句中的分支 15 7.1...

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    她是Oracle ACE,也是OakTable(Oracle社区中著名的“Oracle科学家”的非正式组织)的成员,经常在技术会议上演讲。她的著作还包括 Expert Oracle Practices和Beginning Oracle SQL,博客主页是karenmorton....

    oracle实验报告

    处理方法:利用SQL*PLUS语言工具(也可以使用其他文本编辑器)建立批命令的.SQL文件。在“SQL>”提示符下,使用EDIT命令在”E:\”中建立SCGB.SQL文件。 SCGB.SQL文件中的命令组如下: SQL>EDIT E:\ SCGB.SQL SET ...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

     删除环境变量中的PATHT CLASSPATH中包含Oracle的值。  删除“开始”/“程序”中所有Oracle的组和图标。  删除所有与Oracle相关的目录,包括: C:\Program file\Oracle目录。 ORACLE_BASE目录。 C:\Documents ...

    orcale常用命令

    下面按类别列出一些ORACLE用户常用数据字典的查询使用方法。 1、用户 查看当前用户的缺省表空间 SQL>select username,default_tablespace from user_users; 查看当前用户的角色 SQL>select * from user_...

    Oracle8i_9i数据库基础

    §10.1.10 列值为NULL情形的处理 219 §10.1.11 使用 product_user_file来限制用户使用产品 220 §10.2 常用技巧 221 §10.2.1 long 类型的查询 222 §10.2.2 如何确定执行时间 222 §10.2.3 如何终止用户会话 222 ...

    Oracle DBA 参考手册

    10.7.2. 确定Oracle数据库中重复的记录 61 10.7.2.1. 自关联查询方法 61 10.7.2.2. GROUP BY/HAVING查询方法 61 10.7.2.3. Exception into子句 61 11. 备份与恢复 62 11.1. Oracle 归档模式 62 11.2. 备份 62 11.2.1...

    程序员的SQL金典.rar

    透彻分析函数、子查询、表连接、不同DBMS中的SQL语法差异、SQL调优、NULL值处理、事务、开窗函数等高级技术;通过对实际案例开发过程的详细分析,使读者掌握 SQL的综合应用技巧。 内容简介 本书主要介绍SQL的语法...

    2009达内SQL学习笔记

    3、对列起别名:有直接起别名,加AS起别名,用双引号起别名等三种方法 (单引号,引起字符串;双引号,引起别名。起别名有符号,或者区分大小写时,必须用双引号) 多表查询时,可给表起别名。(给列起别名,列<空格...

    程序员的SQL金典6-8

     11.9.2 Oracle中的SYS_CONNECT_BY_PATH()函数  11.9.3 My SQL Server和DB2中递归查询 附录A 常用数据库系统的安装和使用  A.1 DB2的安装和使用  A.2 MySQL的安装和使用  A.3 Oracle的安装和使用  A.4 ...

    程序员的SQL金典7-8

     11.9.2 Oracle中的SYS_CONNECT_BY_PATH()函数  11.9.3 My SQL Server和DB2中递归查询 附录A 常用数据库系统的安装和使用  A.1 DB2的安装和使用  A.2 MySQL的安装和使用  A.3 Oracle的安装和使用  A.4 ...

    程序员的SQL金典3-8

     11.9.2 Oracle中的SYS_CONNECT_BY_PATH()函数  11.9.3 My SQL Server和DB2中递归查询 附录A 常用数据库系统的安装和使用  A.1 DB2的安装和使用  A.2 MySQL的安装和使用  A.3 Oracle的安装和使用  A.4 ...

    程序员的SQL金典4-8

     11.9.2 Oracle中的SYS_CONNECT_BY_PATH()函数  11.9.3 My SQL Server和DB2中递归查询 附录A 常用数据库系统的安装和使用  A.1 DB2的安装和使用  A.2 MySQL的安装和使用  A.3 Oracle的安装和使用  A.4 ...

    精通SQL 结构化查询语言详解

    8.3.4 GROUP BY子句中的NULL值处理  8.3.5 HAVING子句  8.3.6 HAVING子句与WHERE子句  8.3.7 SELECT语句各查询子句总结  第9章 多表查询  9.1 本章用到的实例表  9.2 表的基本连接  9.2.1 连接表的...

    精通SQL--结构化查询语言详解

    8.3.4 group by子句中的null值处理 153 8.3.5 having子句 153 8.3.6 having子句与where子句 154 8.3.7 select语句各查询子句总结 156 第9章 多表查询 157 9.1 本章用到的实例表 157 9.2 表的基本连接 158 ...

    jdbc操作文档,数据库基本操作文档集合

    update 表名 set 字段名 = 字段值 where 要判断的字段名 is null; 4.删除记录 delete from 表名 where 要删除的字段名 = 要删除的字段值; 1.加载驱动 Class.ForName(com.mysql.jdbc.Driver); 2.建立连接 /* ...

    java 面试题 总结

    assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制。在实现中,assertion就是在程序中的一条语句,它对一个boolean表达式进行检查,一个正确程序必须保证这个boolean表达式的值为...

    超级有影响力霸气的Java面试题大全文档

    assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制。在实现中,assertion就是在程序中的一条语句,它对一个boolean表达式进行检查,一个正确程序必须保证这个boolean表达式的值为...

Global site tag (gtag.js) - Google Analytics