หากเครื่องยนต์ของคุณอนุญาตORDER BY x IS NULL, x
หรือORDER BY x NULLS LAST
ใช้งาน แต่หากไม่เป็นเช่นนั้นก็อาจช่วยได้:
หากคุณเรียงลำดับตามประเภทตัวเลขคุณสามารถทำได้: (ยืมสคีมาจากคำตอบอื่น )
SELECT *
FROM Employees
ORDER BY ISNULL(DepartmentId*0,1), DepartmentId;
หมายเลขที่ไม่ใช่ค่าว่างใด ๆ จะกลายเป็น 0 และค่า Null กลายเป็น 1 ซึ่งเรียงลำดับค่า Null เป็นครั้งสุดท้าย
คุณยังสามารถทำสิ่งนี้เพื่อสตริง:
SELECT *
FROM Employees
ORDER BY ISNULL(LEFT(LastName,0),'a'), LastName
เพราะ>'a'
''
สิ่งนี้สามารถทำงานร่วมกับวันที่ได้ด้วยการบังคับให้ int เป็นโมฆะและใช้วิธีการสำหรับ ints ข้างต้น:
SELECT *
FROM Employees
ORDER BY ISNULL(CONVERT(INT, HireDate)*0, 1), HireDate
(ยอมให้คีมามี HireDate)
วิธีการเหล่านี้หลีกเลี่ยงปัญหาที่ต้องเกิดขึ้นหรือจัดการค่า "สูงสุด" ของทุกชนิดหรือแก้ไขแบบสอบถามถ้าการเปลี่ยนแปลงชนิดข้อมูล (และสูงสุด) (ทั้งปัญหาที่ ISNULL อื่น ๆ ประสบปัญหา) นอกจากนี้ยังสั้นกว่า CASE มาก