GVKun编程网logo

ORACLE中null的排序问题(oracle null排序)

17

对于ORACLE中null的排序问题感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍oraclenull排序,并为您提供关于ASPxGridView排序空值默认为最小,Oracle数据库空值默认

对于ORACLE中null的排序问题感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍oracle null排序,并为您提供关于ASPxGridView排序空值默认为最小,Oracle数据库空值默认最大引起的排序问题、mysql的排序问题、Oracle order by子句对NULL的排序、Oracle SQL 空值排序(Nulls)的有用信息。

本文目录一览:

ORACLE中null的排序问题(oracle null排序)

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:使用其它函数,如:decodecase
方法3:nulls firstnulls 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排序空值默认为最小,Oracle数据库空值默认最大引起的排序问题

今天在处理ASPxGridView自定义页面排序,如果数据没有空值,则排序正常,如果有空值按从小到大的顺序排序,假如最后一页有数据有空值,页面显示的空值在前数据在后,这显然与先前的对不上,后来发现

  • ASPxGridView中空值默认为最小
  • Oracle在Order by 时缺省认为NULL是最大值,所以如果是ASC升序则排在最后,DESC降序则排在最前

解决方法:

使用 NULLS FIRST  或者 NULL LAST  语法

mysql的排序问题

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 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).ASCis the default.

NULLS FirsT | NULLS LASTSpecify whether returned rows containing nulls should appear first or last in the ordering sequence.

NULLSLASTis the default for ascending order,andFirsTis 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 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由于没有佣金比率被排到了前面

linux

今天关于ORACLE中null的排序问题oracle null排序的讲解已经结束,谢谢您的阅读,如果想了解更多关于ASPxGridView排序空值默认为最小,Oracle数据库空值默认最大引起的排序问题、mysql的排序问题、Oracle order by子句对NULL的排序、Oracle SQL 空值排序(Nulls)的相关知识,请在本站搜索。

本文标签: