oracle的order by排序中空字符串处理方法

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

时间: 2024-10-12 06:48:39

oracle的order by排序中空字符串处理方法的相关文章

Oracle使用order by排序关于null值处理

在Oracle中使用order by进行查询排序时,如果排序字段中有空值(null),排序结果可能会达不到我们想要的结果.如: select * from test order by age desc; 按照age字段降序排序,结果如下: 将sql语句改为 select * from test order by age desc nulls last; 即可将null值排到最后."nulls last"将空值放在后面,相反的"nulls first"将空值记录放在前

第17课-数据库开发及ado.net 聚合函数,模糊查询like,通配符.空值处理.order by排序.分组group by-having.类型转换-cast,Convert.union all; Select 列 into 新表;字符串函数;日期函数

第17课-数据库开发及ado.net 聚合函数,模糊查询like,通配符.空值处理.order by排序.分组group by-having.类型转换-cast,Convert.union all;  Select 列 into 新表;字符串函数;日期函数 SQL聚合函数 MAX(最大值).MIN(最小值).AVG(平均值).SUM(和).COUNT(数量:记录的条数) 聚合函数对null不计算.如果一行数据都是null,count(*)包含对空值行.重复行的统计. --聚合函数演示 selec

ORACLE的order by中文排序

在使用order by排序的时候,出现如下情况:   印象中中文排序应该默认是按照拼音排序的,为何"鑫"会排在"中"的后面呢?猜想order by是不是根据对应字符的ASCII码排的呢,因此列出了对应的ASCII,如下:   由此基本可以断定,确实是通过ASCII的大小来排序的,这也解释了为什么数字会排在字母之前,字母为什么会排在汉字之前的现象.但是为什么会出现汉字默认是通过拼音排序的错觉呢,于是查了一下汉字的编码规则,有提到如下一句:       "一级

MySQL,Oracle中空字符串和NULL

Mysql 中空字符串和NULL是不一样的. Oracle中空字符串就是NULL. update User set realname ='' where name = "ff"; -- 在Oracle中不起作用,只有NULL,没有空字符串. update User set mobile = null where name = "ff"; --在Mysql中设置mobile为空. update User set mobile = "" where

问题:oracle LISTAGG 连接字符串;结果:Oracle 连接字符串的方法

Oracle 连接字符串的方法 方法一:wmsys.wm_concat(column) 介绍:其函数在Oracle 10g推出,在10g版本中,返回字符串类型,在11g版本中返回clob类型.括号里面的参数是列,而且可以是多个列的集合,也就是说在括号里面可以自由地用‘||’合并字符串.如下面的例子: Select u_id, wmsys.wm_concat(goods || '(' || num || '斤)' ) goods_sum   from shopping   group by u_i

MySQL中order by排序时,数据存在null咋办

order by排序是最常用的功能,但是排序有时会遇到数据为空null的情况,这样排序就会乱了,这里以MySQL为例,记录我遇到的问题和解决思路. 问题: 网页要实现table的行鼠标拖拽排序,我用AngularJs集成了一个TableDnD开源插件,可以实现,然后在数据库表中增加一个排序字段indexId,但是原来的大量数据是没有排序过的,所以该字段为null. 这样order by时,为null的数据就会排在最前边. 写个测试表模拟一下,如下效果: 解决办法: 最优办法:利用MySQL中的一

oracle数据库中文汉字排序

oracle数据库中文汉字排序 今天需要按oracle数据库中某个表的某个中文字段进行排序,本来感觉挺简单的一个东西,不就是一个order by嘛,可是写完了发现拍的并不对,一时间感到不可思议,又查询,发现果然有这个问题,经过查资料发现,Oracle对中文的排序是按照ASC码的值进行排序的,后来又经过查阅资料发现了一个他的函数 1.按照拼音排序: select * from your_table_name t order by nlssort(t.ordered_column_name,'NLS

SQL Server数据库--》top关键字,order by排序,distinct去除重复记录,sql聚合函数,模糊查询,通配符,空值处理。。。。

top关键字:写在select后面 字段的前面 比如你要显示查询的前5条记录,如下所示: select top 5 * from Student 一般情况下,top是和order by连用的 order by用在表名的后面 order by后面就填你要按它排序的字段,是升序排序(从小到大排序) percent:百分比 %=percent 比如要显示5%的数据处理,不能写top 5%,而是top 5 percent 提示:如果top 5 percent出来的数是3.1条数据的话,是取四条数据,而不

利用oracle rownum让表排序字段值连续

利用oracle rownum让表排序字段值连续 1.需求说明 表(eval_index)中有字段如下: 表字段 描述 说明 ID 主键 GROUP_ID 分组编号 SORT_NUM 排序序号 按照分值编号并排序:1.2.- 由于删除或其他操作,导致sort_num序号不连续:需要不改变原来的排序,保持其编号连续. 2.利用rownum功能实现 update eval_index a seta.sort_num = ( select b.rn from (select rownum rn ,id