对于ORACLE中null的排序问题感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍oraclenull排序,并为您提供关于ASPxGridView排序空值默认为最小,Oracle数据库空值默认
对于ORACLE中null的排序问题感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍oracle null排序,并为您提供关于ASPxGridView排序空值默认为最小,Oracle数据库空值默认最大引起的排序问题、mysql的排序问题、Oracle order by子句对NULL的排序、Oracle SQL 空值排序(Nulls)的有用信息。
本文目录一览:- ORACLE中null的排序问题(oracle null排序)
- ASPxGridView排序空值默认为最小,Oracle数据库空值默认最大引起的排序问题
- mysql的排序问题
- Oracle order by子句对NULL的排序
- Oracle SQL 空值排序(Nulls)
ORACLE中null的排序问题(oracle null排序)
在平时的业务处理中,经常遇到要对业务数据进行排序,并且要对null值也做相应的排序。在Oracle中,进行Order by排序时缺省认为null是最大值,所以如果是ASC升序则被排在最后,而DESC降序则排在最前。有的时候我们需要在降序排列时,同时要将null的数据排到最后,应该如何处理。
方法1:使用nvl函数
语法:Nvl(expr1, expr2)
若EXPR1是NULL,则返回EXPR2,否则返回EXPR1
SELECT NAME,NVL(TO_CHAR(COMM),''NOT APPLICATION'') FROM TABLE1;
认识了NVL的语法,就可以在排序中使用,如: ORDER BY NVL(FIELD, ''0'')
方法2:使用其它函数,如:decode
,case
方法3:nulls first
或nulls last
语法:
Nulls first
:表示null值的记录将排在最前
Nulls last
:表示null值的记录将排在最后
--null值始终放在最前面
select * from ac01 order by aac001 asc nulls first
--null值始终放在最后面
select * from ac01 order by aac001 desc nulls last
经过上述方法的比较,第三种方法比较方便。
ASPxGridView排序空值默认为最小,Oracle数据库空值默认最大引起的排序问题
今天在处理ASPxGridView自定义页面排序,如果数据没有空值,则排序正常,如果有空值按从小到大的顺序排序,假如最后一页有数据有空值,页面显示的空值在前数据在后,这显然与先前的对不上,后来发现
- ASPxGridView中空值默认为最小
- Oracle在Order by 时缺省认为NULL是最大值,所以如果是ASC升序则排在最后,DESC降序则排在最前
解决方法:
使用 NULLS FIRST 或者 NULL LAST 语法mysql的排序问题
我用order by time排序一个表格
可是排出来的结果是 0 10 100 1000 1010 1020 110 120...这样的
我想让排序结果是从小到大排 请问能实现么?
求指教~
回复讨论(解决方案)
你的 time 字段是字符型的?
order by time+0
就可以了
time 是什么类型
把time转换成整型
order by CAST(time AS UNSIGNED)
就可以了
Oracle order by子句对NULL的排序
我们都知道在Oracle sql语句中order by 是用来排序查询出来的结果集的,而在Oracle中NULL值是一个很特殊的值,如果order by指定的列有NULL值,那排序结果又是怎样的呢。
下面做一组实验观察一下order by时Oracle是怎么处理NULL的
版本11.2.0.4
1、创建测试表并插入测试数据
zx@ORCL>createtablet(idnumber,namevarchar2(10)); Tablecreated. zx@ORCL>insertintotvalues(1,'zx'); 1rowcreated. zx@ORCL>insertintotvalues(2,'wl'); 1rowcreated. zx@ORCL>insertintotvalues(3,'zxt'); 1rowcreated. zx@ORCL>insertintotvalues(4,NULL); 1rowcreated. zx@ORCL>insertintotvalues(5,'yhz'); 1rowcreated. zx@ORCL>insertintotvalues(6,NULL); 1rowcreated. zx@ORCL>commit; Commitcomplete. zx@ORCL>select*fromt; IDNAME ---------------------------------------- 1zx 2wl 3zxt 4 5yhz 6 6rowsselected.
2、测试order by
zx@ORCL>select*fromtorderbynameasc; IDNAME ---------------------------------------- 2wl 5yhz 1zx 3zxt 6 4 6rowsselected. zx@ORCL>select*fromtorderbynamedesc; IDNAME ---------------------------------------- 4 6 3zxt 1zx 5yhz 2wl 6rowsselected.
看到不同的排序方式,NULL值所排序的位置不同。升序(asc)NULL排在最后,降序(desc)NULL排在最前。
我们再来看看官方文档是怎么描述的
ASC | DESCSpecify the ordering sequence (ascending or descending).ASC
is the default.
NULLS FirsT | NULLS LASTSpecify whether returned rows containing nulls should appear first or last in the ordering sequence.
NULLS
LAST
is the default for ascending order,andFirsT
is the default for descending order.
可以看到我们的实验结果与官方文档描述是一致的。而且还可以使用NULLS FirsT|NULLS LAST来决定NULL的值是排在最前还是排在最后。
3、再次做实验验证
zx@ORCL>select*fromtorderbynameascnullsfirst; IDNAME ---------------------------------------- 6 4 2wl 5yhz 1zx 3zxt 6rowsselected. zx@ORCL>select*fromtorderbynameascnullslast; IDNAME ---------------------------------------- 2wl 5yhz 1zx 3zxt 6 4 6rowsselected. zx@ORCL>select*fromtorderbynamedescnullsfirst; IDNAME ---------------------------------------- 4 6 3zxt 1zx 5yhz 2wl 6rowsselected. zx@ORCL>select*fromtorderbynamedescnullslast; IDNAME ---------------------------------------- 3zxt 1zx 5yhz 2wl 6 4 6rowsselected.
从结果可以看出使用NULLS FirsT|NULLS LAST可以直接控制NULL值在排序结果的首部还是尾部。
Oracle SQL 空值排序(Nulls)
在数据开发应用中,很多时候需要对数据进行排序,但是在Oracle 数据库中,有空值一说(NULL)。如果一个列中有的值是空的,则如果对
在数据开发应用中,很多时候需要对数据进行排序,但是在Oracle 数据库中,有空值一说(NULL)。如果一个列中有的值是空的,,则如果对此列进行排序的话,空值的行将被排序放到后面,如我对HR模式下的EMPLOYEES员工表按照佣金比率列进行排序的话,
SELECT t.employee_id, t.last_name, t.commission_pct
FROM employees t
WHERE t.employee_id BETWEEN 178 AND 181
ORDER BY t.commission_pct
结果如下:
179 Johnson 0.10
178 Grant 0.15
180 Taylor
181 Fleaur
180,181由于没有佣金比率被排到了后面
而有的时候我们希望将空值的记录排序在前面而不是后面 ,这时候则需要使用关键字:
NULLS FIRST :将空值的记录排序在前面
NULLS LAST:将空值的记录排序在后面(默认)
例如上面的例子做少许的修改:
SELECT t.employee_id, t.last_name, t.commission_pct
FROM employees t
WHERE t.employee_id BETWEEN 178 AND 181
ORDER BY t.commission_pct NULLS FIRST
结果如下:
180 Taylor
181 Fleaur
179 Johnson 0.10
178 Grant 0.15
180,181由于没有佣金比率被排到了前面
今天关于ORACLE中null的排序问题和oracle null排序的讲解已经结束,谢谢您的阅读,如果想了解更多关于ASPxGridView排序空值默认为最小,Oracle数据库空值默认最大引起的排序问题、mysql的排序问题、Oracle order by子句对NULL的排序、Oracle SQL 空值排序(Nulls)的相关知识,请在本站搜索。
本文标签: