2012-01-26 44 views
7

如果我在我的數據庫中的以下輸入:SQL:如何在訂單中將空條目排序到前端?

ID名稱
1 [空]
2 [空字符串]
3阿爾法
4布拉沃
5查理

..then如何使用ORDER BY命令行名稱前面的行?

如果我使用ORDER BY名稱,我得到的名單之上,但其實我是想:

3阿爾法
4布拉沃
5查理
1 [空]
2'

+0

是否爲空值必須拿出一個空字符串之前,或者是他們相同的? – JeffO

回答

20
ORDER BY 
    CASE 
    WHEN Name IS NULL THEN 1 
    WHEN Name = '' THEN 2 
    ELSE 3 
    END DESC, 
    Name ASC 
+0

DESC獲取頂部的名稱? – Bort

+0

應該按'降序排列',因爲他希望NULL和空字符串在底部 – Icarus

+1

+1非常有效的方式......你知道這是一個每時每刻都能學到新東西的金礦。如果你會給出答案。我會使用三個過濾記錄的聯合語句,這意味着去了三次數據庫:) – Pankaj

2

你可以這樣說:

ORDER BY CASE WHEN Name IS NULL then 3 WHEN Name = '' THEN 2 ELSE 1 END, Name 

它會按名稱中的數字開頭和後綴。

0

ORDER BY(CASE WHEN名稱爲null,則1如果名稱爲null,則2 ELSE 3 END)DESC

2
ORDER BY 
CASE 
    WHEN Name IS NULL THEN 1 
    WHEN Name = '' THEN 2 
    ELSE 3 
END DESC, 
Name ASC