📜  SQL SERVER ORDER BY DATE NULL LAST - SQL (1)

📅  最后修改于: 2023-12-03 15:35:04.801000             🧑  作者: Mango

SQL SERVER ORDER BY DATE NULL LAST - SQL

简介

在SQL SERVER中,ORDER BY子句用于以特定列或列组的值排序结果集。默认情况下,如果列中的值为空,则该列将在排序中出现在第一位。然而,有时我们需要将空值放置在最后,而不是最前面。

本文将介绍如何使用SQL SERVER中的ORDER BY子句将空值放在最后。

语法

使用ORDER BY子句按特定列或列组的值排序结果集。

语法如下:

SELECT column1, column2, ...
FROM table_name
ORDER BY column1 [ASC|DESC], column2 [ASC|DESC], ...;
NULLS LAST选项

在SQL SERVER中,我们可以使用NULLS LAST选项将空值放在最后。要使用此选项,我们需要在ORDER BY子句中指定ASC或DESC,并在其后添加NULLS LAST。

  • 如果我们想将空值放在降序排序的结果集的最后,我们可以在ORDER BY子句中使用DESC NULLS LAST。
  • 如果我们希望将空值放在升序排序的结果集的最后,我们可以在ORDER BY子句中使用ASC NULLS LAST。

以下是使用NULLS LAST选项的示例:

SELECT student_name, grade
FROM student
ORDER BY grade DESC NULLS LAST;

在上面的示例中,我们从student表中选择student_name和grade列,并使用grade列的值对结果集进行排序。我们使用DESC NULLS LAST选项,以便将空值放在结果集的最后。

示例

让我们通过以下示例进行进一步的演示:

创建表
CREATE TABLE Employee
(
    EmployeeID INT PRIMARY KEY,
    EmployeeName VARCHAR(50),
    HireDate DATE
);
插入数据
INSERT INTO Employee (EmployeeID, EmployeeName, HireDate)
VALUES (1, 'John', '2021-01-01'),
       (2, 'Mark', NULL),
       (3, 'Amy', '2021-02-01'),
       (4, 'David', '2021-03-01'),
       (5, 'Peter', NULL),
       (6, 'Mary', '2021-04-01');
查询数据
SELECT EmployeeName, HireDate
FROM Employee
ORDER BY HireDate ASC NULLS LAST;

在上面的示例中,我们创建了一个名为Employee的表,并插入了一些示例数据。然后,我们从Employee表中选择EmployeeName和HireDate列,并按HireDate列的升序值对结果集进行排序。我们还使用ASC NULLS LAST选项,以便将空值放在结果集的最后。

总结

使用NULLS LAST选项,我们可以将空值放在排序结果集的末尾而不是开头。这可以通过在ORDER BY子句中指定ASC或DESC以及NULLS LAST来实现。