Frage stellen
0

Wie kann ich bei der Datenübernahme in Firebird die Sortierfolge der Datensätze anpassen?

gefragt 2019-06-17 14:34:57 +0200

Benutzer-LO Gravatar-Bild

updated 2019-06-17 14:36:27 +0200

W10 Pro 1903, LO 6.2.4.2 64-Bit Umstellung HSQLDB auf FIREBIRD

Ich habe eine einfache Adressdatenbank als HSQLDB, Schlüssel sind NAME VORNAME STRASSE. Das Feld NAME ist als TEXT(VARCHR) formatiert. Nach der automatischen Umstellung wird die ursprüngliche Sortierreihenfolge nicht mehr eingehalten, sondern alle Namen beginnend mit einem kleinen Buchstaben sind an das Ende der gesamten Tabelle eingereiht (also hinter "Z") und nicht mehr innerhalb der Reihe mit dem entsprechenden Großbuchstaben ("A" "a" "B" "C" "D" "d"" etc.).

Gewünscht ist eine Reihenfolge wie im Telefonbuch. Wo kann oder muss ich etwas ändern?

VG Werner

Bearbeiten Tags ändern Melden schließen vereinen löschen

Kommentare

Ich bin über die Lösung selbst gestolpert!

Vor der Umstellung habe ich bei einem neuen Versuch das Format des Feldes NAME auf TEXT(VARCHAR_IGNORECASE) geändert. Danach dann due Umstellung auf FIREBIRD durchgeführt und nun siehe da: Reihenfolge wie gewünscht (Telefonbuch).

Allerdings schein es dieses Format in FIREBIRD nicht zu geben, da ist das Feld NAME dann wieder als TEXT(VARCHAR) formatiert.

Evtl. weiß ja noch jeman mehr?

VG Werner

Benutzer-LO Gravatar-BildBenutzer-LO ( 2019-06-17 15:49:55 +0200 )Bearbeiten

1 Antwort

1

geantwortet 2019-06-17 16:55:08 +0200

RobertG Gravatar-Bild

Das ist leider ein Bug, der in der internen Firebird-Datenbank noch existiert:

SELECT "Name" FROM "Tabelle" ORDER BY "Name" ASC

bringt eine Sortierung wie oben beschrieben - auch bei neuen Firebird-Datenbanken ohne Migration.

SELECT "Name" FROM "Table" ORDER BY "Name" COLLATE UNICODE ASC

kann nur im direkten SQL-Modus ablaufen, bringt aber die Sortierung in der gewünschten Reihenfolge. Nachteil ist, dass so eine Abfrage natürlich nicht für die Eingabe von Daten genutzt werden kann und die GUI die Sortierung auch nicht so durchführt, wenn über die entsprechenden Buttons ein Feld sortiert wird.

Ich habe das gleich in Bug 124054 entsprechend zugefügt.

Bearbeiten Melden löschen Link mehr

Kommentare

Vielen Dank für deinen Hinweis und die Aufnahme in den Bug .Leider hilft ja deine Lösung mit der erweiteren Select-Anweisung nicht so ganz weiter, wenn man auf das integrierte Berichtswesen zurückgreifen muss/will um SQL etc. zu vermeiden. Über SELECT könnte auch nóch die Ergänzung COLLATE UNICODE_CI bzw. UNICODE_CI_AI weiterhelfen. Die Umstellung scheint mir noch nicht so recht ausgereift. Man muss wohl doch noch eine Weile mit der HSQLDB leben.

Benutzer-LO Gravatar-BildBenutzer-LO ( 2019-06-18 06:43:06 +0200 )Bearbeiten

Da hilft dann vielleicht, dass Du nicht die Collation änderst, sondern eine zusätzliche Spalte in die Abfrage einfügst:

SELECT "Name", UPPER("Name") AS "UName" FROM "Tabelle" ORDER BY "UName" ASC

Zur Umstellung: Ich würde auch zur Zeit noch bei der HSQLDB bleiben.

RobertG Gravatar-BildRobertG ( 2019-06-18 07:52:11 +0200 )Bearbeiten
Registrieren oder einloggen, um zu antworten

Antwortwerkzeuge

1 Beobachter

Statistik

Gefragt: 2019-06-17 14:34:57 +0200

Angesehen: 49 Mal

Aktualisiert: Jun 17