繁花不似锦
如果您的引擎允许ORDER BY x IS NULL, x或ORDER BY x NULLS LAST使用。但是,如果不是这样,这些方法可能会有所帮助:如果按数字类型排序,则可以执行以下操作:(从另一个答案借用架构。)SELECT * FROM EmployeesORDER BY ISNULL(DepartmentId*0,1), DepartmentId;结果显示按DepartmentId排序,最后为null任何非空数都将变为0,并且空值将变为1,这将最后对空值进行排序。您还可以对字符串执行此操作:SELECT *FROM EmployeesORDER BY ISNULL(LEFT(LastName,0),'a'), LastName结果显示按LastName排序,其中null为last因为'a'> ''。这甚至可以通过强制为可为null的int并将上述方法用于int来处理日期:SELECT *FROM EmployeesORDER BY ISNULL(CONVERT(INT, HireDate)*0, 1), HireDate(假设该模式具有HireDate。)这些方法避免了必须提出或管理每种类型的“最大值”值或在数据类型(和最大值)发生更改时修复查询的问题(这是其他ISNULL解决方案所遇到的问题)。另外,它们比CASE短得多。