Kann SQLite natürlich sortieren? Zum Beispiel würde ich bevorzugen, dass die Ergebnisse natürlich sortiert werden (d. H. Seekuh, Affe). Hat SQLite keine Möglichkeit, so zu sortieren? Ich sortiere eine Menge Daten, und wenn SQLite nicht natürlich sortieren kann, nehme ich an, dass die Lösung ist, zu PostgreSQL oder MySQL zurückzukehren.Kann SQLite natürlich sortieren?
Antwort
ORDER BY UPPER(name)
wird erreichen, was Sie suchen.
Darüber hinaus verwenden Sie die SQLite default collation, was bedeutet, dass Vergleiche mit C memcmp
Funktion durchgeführt werden, die Bytes vergleicht. In diesem Fall sind M und m sehr unterschiedlich. Sie können die Spalte ändern, um eine NOCASE
Sortierung zu haben. Bei einem Blick über die Dokumente scheint es, als müssten Sie eine neue Tabelle erstellen, Ihre Daten kopieren, die alte Tabelle löschen und die neue umbenennen, da der Befehl ALTER TABLE
nur die Tabelle umbenennt oder eine Spalte hinzufügt.
Sie haben nicht zu alter
die Tabelle Sortierung zu ändern:
SELECT name FROM animals ORDER BY name COLLATE NOCASE;
Wenn Sie mehr spezialisierte Sortierung benötigen, können Sie Ihre eigenen Sortierfunktionen mit der sqlite3_create_collation*
Familie von Funktionen registrieren und dann COLLATE myCollationFunctionName
verwenden.
Nicht genau natürlich (es sortiert immer noch 1, 10, 11, 12, 2, 3 usw.), aber das funktioniert für den Tisch, mit dem ich arbeite. Vielen Dank! –
Ich wünschte, SQLite würde ALTER-Syntax vollständig unterstützen, es ist sehr ärgerlich – colithium
@Mark: Einige Leute betrachten diese natürliche Reihenfolge (z. B. Filmtitel). Wenn Sie Ideen zur numerischen Sortierung in SQLite erhalten möchten, geben Sie bitte eine andere Frage ein, da die Parameter etwas anders sind. Dies würde diejenigen anziehen, die mit SQLite besser vertraut sind als ich. – Eric