-原理
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
<wbr></wbr>
--将nulls始终放在最后
select
* from
zl_cbqc order
by cb_ld desc
nulls
last
--实例
1.order by col<wbr> (asc/desc)<wbr> NULLS LAST 不管col如何排序 col的null(空值)总是在最后</wbr></wbr>
SQL> WITH tab AS(
<wbr> 2<wbr> SELECT 1 id,'小明' NAME,'开发中心' dept FROM dual<br><wbr> 3<wbr> UNION ALL<br><wbr> 4<wbr> SELECT 2,'小张','开发中心' FROM dual<br><wbr> 5<wbr> UNION ALL<br><wbr> 6<wbr> SELECT 3,'小王','开发中心' FROM dual<br><wbr> 7<wbr> UNION ALL<br><wbr> 8<wbr> SELECT 4,'小丽','研发中心' FROM dual<br><wbr> 9<wbr> )<br><wbr>10<wbr> SELECT *<br><wbr>11<wbr><wbr><wbr> FROM (<br><wbr>12<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> SELECT ID, NAME, DEPT FROM tab<br><wbr>13<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> UNION ALL<br><wbr>14<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> SELECT NULL, DEPT, DEPT FROM tab GROUP BY DEPT<br><wbr>15<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> )<br><wbr>16<wbr><wbr> ORDER BY DEPT, ID NULLS LAST<br><wbr>17<wbr> /</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr> ID NAME<wbr><wbr><wbr><wbr> DEPT<br>
---------- -------- --------<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> 1 小明<wbr><wbr><wbr><wbr> 开发中心<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> 2 小张<wbr><wbr><wbr><wbr> 开发中心<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> 3 小王<wbr><wbr><wbr><wbr> 开发中心<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> 开发中心 开发中心<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> 4 小丽<wbr><wbr><wbr><wbr> 研发中心<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> 研发中心 研发中心</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
已选择6行。
2.order by col<wbr> (asc/desc)<wbr> NULLS first 不管col如何排序 col的null(空值) 总是在最前</wbr></wbr>
SQL> edi
已写入 file afiedt.buf
<wbr> 1<wbr> WITH tab AS(<br><wbr> 2<wbr> SELECT 1 id,'小明' NAME,'开发中心' dept FROM dual<br><wbr> 3<wbr> UNION ALL<br><wbr> 4<wbr> SELECT 2,'小张','开发中心' FROM dual<br><wbr> 5<wbr> UNION ALL<br><wbr> 6<wbr> SELECT 3,'小王','开发中心' FROM dual<br><wbr> 7<wbr> UNION ALL<br><wbr> 8<wbr> SELECT 4,'小丽','研发中心' FROM dual<br><wbr> 9<wbr> )<br><wbr>10<wbr> SELECT *<br><wbr>11<wbr><wbr><wbr> FROM (<br><wbr>12<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> SELECT ID, NAME, DEPT FROM tab<br><wbr>13<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> UNION ALL<br><wbr>14<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> SELECT NULL, DEPT, DEPT FROM tab GROUP BY DEPT<br><wbr>15<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> )<br><wbr>16*<wbr> ORDER BY DEPT, ID NULLS first<br>
SQL> /</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr> ID NAME<wbr><wbr><wbr><wbr> DEPT<br>
---------- -------- --------<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> 开发中心 开发中心<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> 1 小明<wbr><wbr><wbr><wbr> 开发中心<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> 2 小张<wbr><wbr><wbr><wbr> 开发中心<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> 3 小王<wbr><wbr><wbr><wbr> 开发中心<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> 研发中心 研发中心<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> 4 小丽<wbr><wbr><wbr><wbr> 研发中心</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
已选择6行。
目的:
本来的目的是把部门相同的人员归在一起
SQL> edi
已写入 file afiedt.buf
<wbr> 1<wbr> WITH tab AS(<br><wbr> 2<wbr> SELECT 1 id,'小明' NAME,'开发中心' dept FROM dual<br><wbr> 3<wbr> UNION ALL<br><wbr> 4<wbr> SELECT 2,'小张','开发中心' FROM dual<br><wbr> 5<wbr> UNION ALL<br><wbr> 6<wbr> SELECT 3,'小王','开发中心' FROM dual<br><wbr> 7<wbr> UNION ALL<br><wbr> 8<wbr> SELECT 4,'小丽','研发中心' FROM dual<br><wbr> 9<wbr> )<br><wbr>10<wbr> SELECT id||name<br><wbr>11<wbr><wbr><wbr> FROM (<br><wbr>12<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> SELECT ID, NAME, DEPT FROM tab<br><wbr>13<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> UNION ALL<br><wbr>14<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> SELECT NULL, DEPT, DEPT FROM tab GROUP BY DEPT<br><wbr>15<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> )<br><wbr>16*<wbr> ORDER BY DEPT, ID NULLS last<br>
SQL> /</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
ID||NAME
------------------------------------------------
1小明
2小张
3小王
开发中心
4小丽
研发中心
已选择6行。
相关推荐
首先,我们需要理解在Oracle中进行数据排序的基本语法,即SQL的ORDER BY子句。当我们在查询语句(如SELECT)中添加ORDER BY,Oracle会根据指定的列或表达式对结果集进行升序(ASC,默认)或降序(DESC)排序。例如:...
适用情况: oracle 对查询结果进行排序时,被排序的栏位存在null值,且要指定NULL值排在最前面或者最后面 关键字:Nulls First;Nulls Last 默认情况:null 默认为最大值(即:asc 升序<小–>大>,null值排在最后...
此外,Oracle还提供了一些高级排序功能,如`NULLS FIRST`和`NULLS LAST`,它们用于控制NULL值的排序位置。默认情况下,NULL值在非NULL值之前,但你可以用这些选项改变这个行为: ```sql SELECT * FROM employees ...
FUNCTION_NAME(<参数>,…) OVER (表达式,…> 表达式 <ASC DESC> <NULLS FIRST NULLS LAST>> 子句>) 其中,PARTITION BY 子句用于将数据分区,ORDER BY 子句用于排序数据,而 WINDOWING 子句用于指定窗口的范围。 ...
在`ORDER BY` 语句中,`NULLS FIRST` 或 `NULLS LAST` 可以控制 `NULL` 值的排序位置。 7. **NVL函数**: - **NVL** 函数用于处理 `NULL` 值,当表达式结果为 `NULL` 时,NVL 将返回第二个参数的值,例如将 `...
Order子句则用于定义行的排序,可以包含ASC或DESC关键字,以及NULLS FIRST或NULLS LAST选项来控制NULL值的位置。Window子句更为复杂,它定义了分析函数的工作范围,可以基于行数(ROWS BETWEEN)或值范围(RANGE ...
在查询结果中,可以通过 `NULLS FIRST` 或 `NULLS LAST` 来控制 null 值的位置。 **示例**: ```sql SELECT * FROM zl_cbqc ORDER BY cb_ld NULLS FIRST; // cb_ld 是空值的始终放到最前 SELECT * FROM zl_cbqc ...
FUNCTION_NAME(<参数>,...) OVER (表达式,...>表达式 | DESC><NULLS FIRST | NULLS LAST>子句>) ``` - **PARTITION BY**子句:将数据分成多个分区,在每个分区内独立计算函数。 - **ORDER BY**子句:指定如何对分区...
分析函数的语法为:FUNCTION_NAME(<参数>,…) OVER (表达式,…> 表达式 <ASC DESC> <NULLS FIRST NULLS LAST>> 子句>)。 1. 值域窗(RANGE WINDOW) 值域窗是一种基于值域的窗口函数,可以对数据进行聚合和分析。...
=`, `IN`, `NOT IN`, `BETWEEN`, `IS NULL`, `IS NOT NULL`, `NULLS LAST`, `NULLS FIRST` - **全局函数**: - `NVL(字段名, 指定值)`:如果字段为 `NULL`,则返回指定值;否则返回字段本身。 - `DECODE(字段名, 值...
4. `ORDER BY`:定义在每个分区内的行排序方式,包括升序(ASC)、降序(DESC)以及空值处理(NULLS FIRST/NULLS LAST)。 5. `WINDOWING CLAUSE`:定义一个固定或动态的数据窗口,分析函数将在这个窗口内计算值。 常见的...