如何使用NULLS FIRST或NULLS LAST函数在Oracle中设置空值排序优先级?

2026-05-07 12:220阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计884个文字,预计阅读时间需要4分钟。

如何使用NULLS FIRST或NULLS LAST函数在Oracle中设置空值排序优先级?

Oracle数据库中空值默认排序行为为不确定,升序(ASC)时排最后,降序(DESC)时排最前。但无法满足业务中统一把NULL放最前/最后的需求——必须显式使用+ `NULLS FIRST` 或 `NULLS LAST` 控制排序。

Oracle 默认空值排序逻辑是什么

Oracle 把 NULL 视为“未知最大值”,不是 0、不是空字符串、也不等于自身。这导致:

  • ORDER BY col ASC:所有 NULL 排在非空值之后(即末尾)
  • ORDER BY col DESC:所有 NULL 排在非空值之前(即开头)
  • 这种行为不可靠 —— 它依赖于排序方向,且和多数前端展示逻辑(比如“空姓名置顶”)冲突

NULLS FIRST 强制空值排最前

无论升序还是降序,加 NULLS FIRST 就能确保所有 NULL 记录出现在结果集头部:

SELECT * FROM employees ORDER BY hire_date NULLS FIRST;

SELECT * FROM employees ORDER BY hire_date DESC NULLS FIRST;

注意:NULLS FIRST 不改变字段本身的排序方向(ASC 还是 DESC),只决定 NULL 的位置优先级。

阅读全文
标签:Oracle

本文共计884个文字,预计阅读时间需要4分钟。

如何使用NULLS FIRST或NULLS LAST函数在Oracle中设置空值排序优先级?

Oracle数据库中空值默认排序行为为不确定,升序(ASC)时排最后,降序(DESC)时排最前。但无法满足业务中统一把NULL放最前/最后的需求——必须显式使用+ `NULLS FIRST` 或 `NULLS LAST` 控制排序。

Oracle 默认空值排序逻辑是什么

Oracle 把 NULL 视为“未知最大值”,不是 0、不是空字符串、也不等于自身。这导致:

  • ORDER BY col ASC:所有 NULL 排在非空值之后(即末尾)
  • ORDER BY col DESC:所有 NULL 排在非空值之前(即开头)
  • 这种行为不可靠 —— 它依赖于排序方向,且和多数前端展示逻辑(比如“空姓名置顶”)冲突

NULLS FIRST 强制空值排最前

无论升序还是降序,加 NULLS FIRST 就能确保所有 NULL 记录出现在结果集头部:

SELECT * FROM employees ORDER BY hire_date NULLS FIRST;

SELECT * FROM employees ORDER BY hire_date DESC NULLS FIRST;

注意:NULLS FIRST 不改变字段本身的排序方向(ASC 还是 DESC),只决定 NULL 的位置优先级。

阅读全文
标签:Oracle