Problem:
Du vil sortere rækkerne efter månedsnummer, givet månedsnavne (du ønsker, at januar skal vises først, december sidste).
Eksempel:
fødselsdagen tabel indeholder to kolonner:navn og fødselsdag_måned . Månederne er angivet i navne, ikke i tal.
| navn | fødselsdag_måned |
|---|---|
| Ronan Tisha | Januar |
| December | April |
| Angie Julia | April |
| Narelle Dillan | April |
| Purdie Casey | Januar |
| Donna Nell | NULL |
| Blaze Graeme | Oktober |
Du vil sortere rækkerne efter fødselsdag_måned .
Løsning:
VÆLG *FRA fødselsdag BESTIL EFTER (SAG fødselsdag_måned NÅR 'Januar' SÅ 1. NÅR 'Februar' SÅ 2. NÅR 'Marts' SÅ 3. NÅR 'April' SÅ 4. NÅR 'Maj' SÅ 5. NÅR 'Juni' SÅ 6. NÅR 'Juli' ' SÅ 7 NÅR 'August' SÅ 8 NÅR 'September' SÅ 9 NÅR 'Oktober' SÅ 10 NÅR 'November' SÅ 11 NÅR 'December' SÅ SLUTTER 12);
Resultatet ser sådan ud (rækkerne er sorteret i stigende rækkefølge efter fødselsdag_måned ):
| navn | fødselsdag_måned |
|---|---|
| Purdie Casey | Januar |
| Angie Julia | April |
| Narelle Dillan | April |
| Blaze Graeme | Oktober |
| Ronan Tisha | Januar |
| December | NULL |
| Donna Nell | NULL |
Diskussion:
For at sortere rækkerne efter måned, skal du bruge månederne i tal (ikke navne). Du kan konvertere månedsnavne til numeriske måneder ved at bruge CASE WHEN klausul. Efter CASE søgeord, skal du angive navnet på kolonnen. Derefter efter hver HVORNÅR , angiv værdien i denne kolonne, brug THEN søgeord, og angiv den nye værdi, du vil tildele i stedet for den gamle. Her er kolonnen fødselsdag_måned , de aktuelle værdier i denne kolonne er 'Januar ', 'Februar ', …, 'December ', og de nye værdier er de numeriske måneder 1 , 2, …, 12 . Når du er færdig med at konvertere alle værdierne, skal du huske at bruge END nøgleord for at lukke CASE WHEN klausul. Tag et kig:
CASE fødselsdag_måned NÅR "Januar" SÅ 1 NÅR "Februar" SÅ 2 NÅR "Marts" SÅ 3 NÅR "April" SÅ 4 NÅR "maj" SÅ 5 NÅR "Juni" SÅ 6 NÅR "Juli" SÅ 7. NÅR "August" ' SÅ 8. NÅR 'September' SÅ 9. NÅR 'Oktober' SÅ 10. NÅR 'November' SÅ 11. NÅR 'December' SÅ 12.Sådan konverterer du et månedsnavn til et månedsnummer. Du kan bruge den til at sortere rækkerne i stigende rækkefølge efter måned – bare brug den i
ORDER BYklausul.Bemærk, at
NULLi SQLite s vises først ved sortering i stigende rækkefølge og sidst ved sortering i faldende rækkefølge. Også rækkerne med den sammefødselsdag_månedvises i tilfældig rækkefølge (du kan muligvis seAngie Juliaanden ogNarelle Dillantredje, ellerNarelle Dillananden ogAngie Juliatredje). For at ændre rækkefølgen til faldende, brugDESCsøgeord efter kolonnen iORDER BYklausul. Sådan skal forespørgslen se ud:VÆLG *FRA fødselsdag BESTIL EFTER (SAG fødselsdag_måned NÅR 'Januar' SÅ 1. NÅR 'Februar' SÅ 2. NÅR 'Marts' SÅ 3. NÅR 'April' SÅ 4. NÅR 'Maj' SÅ 5. NÅR 'Juni' SÅ 6. NÅR 'Juli' ' SÅ 7 NÅR 'August' SÅ 8 NÅR 'September' SÅ 9 NÅR 'Oktober' SÅ 10 NÅR 'November' SÅ 11 NÅR 'December' SÅ SLUT 12) DESC;