Beim Organisieren von Daten in einer Datenbanktabelle mit einem optionalen Sortierfeld ist es üblich, Nullwerte zuletzt zu platzieren. Manchmal ist jedoch eine Ausnahme für bestimmte Werte erforderlich. In PostgreSQL entstand die Anforderung, Nullwerte nach Nicht-Nullen zu sortieren, wobei -1 eine Ausnahme war, die nach allen anderen kommen sollte.
Um dies zu erreichen, bot sich eine einfache Lösung an:
SELECT * FROM tasks ORDER BY (sort IS NOT DISTINCT FROM -1), sort;
Postgres behandelt boolesche Werte als Typ, einschließlich NULL. Seine Standardsortierreihenfolge ist:
Im Ausdruck (sort NICHT UNTERSCHIEDLICH VON -1), wird die Bedingung für alle Werte mit FALSE ausgewertet, mit Ausnahme von -1, das als TRUE ausgewertet wird und als letztes sortiert wird. Wenn Sie dies mit einer sekundären Sortierung kombinieren, werden die Daten wie gewünscht sortiert.
Eine alternative Abfrage, die das gleiche Ergebnis liefert, ist:
SELECT * FROM tasks ORDER BY (sort IS DISTINCT FROM -1) DESC, sort;
Durch Nutzung der booleschen Funktionalität von Postgres und Kombination mit der ORDER BY-Klausel wird es möglich, komplexe Sortieranforderungen problemlos zu bewältigen.
Das obige ist der detaillierte Inhalt vonWie sortiere ich Nullen zuletzt in PostgreSQL mit einer bestimmten Wertausnahme?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!