SQL 排序顺序,最后为空值

标签 sql sql-server sql-server-2005

我有以下测试代码:

CREATE TABLE #Foo (Foo int)

INSERT INTO #Foo SELECT 4
INSERT INTO #Foo SELECT NULL
INSERT INTO #Foo SELECT 2
INSERT INTO #Foo SELECT 5
INSERT INTO #Foo SELECT 1

SELECT * FROM #Foo
 ORDER BY
  CASE WHEN Foo IS NULL THEN Foo DESC ELSE Foo END

DROP TABLE #Foo

我正在尝试产生以下输出:

1
2
3
4
5
NULL

“如果为空则将其放在最后”

如何使用 Sql 2005 完成此操作

/M

最佳答案

一种方法是像这样排序:

ORDER BY 
(CASE WHEN Foo IS NULL THEN 1 ELSE 0 END), Foo

或者:首先按 null 排序,然后按 Foo 内容排序。

关于SQL 排序顺序,最后为空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2498240/

相关文章:

javascript - HTML5 本地存储和 SQL

mysql - 过滤结果中的重复行不包括一列?

sql-server - 将 SQL Server 数据库分发为 .bak 或 .mdf 有何优点/缺点?

sql - 结合 INSERT 和 UPDATE 语句(SQL2005 存储过程)

sql-server - 为什么 LIKE 比 = 快?

php - 制作事件日志的最有效方法

sql - 查询具有特定特征的连续行

sql-server - 我需要理解以下 MS SQL 语句(SELECT FROM VALUES)

c# - 使用 LINQ 进行查询,其中上下文与对象列表中的多个参数相匹配

sql - 简单 SQL 查询中 "NOT IN"的问题