Oracle   发布时间:2022-05-17  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了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 order by子句对NULL的排序全部内容,希望文章能够帮你解决Oracle order by子句对NULL的排序所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:nam