![]() |
Datenbank: Firebird • Version: 2.1 • Zugriff über: Umlaute
Firebird Sortierung Umlaute
Hallo zusammen,
wenn ich eine FirebirdDB her nehmen und per ISO8859_1 collate de_de einrichte und dann ein
Code:
mache, werden die Umlaute anscheinen nach DIN 5007 Var1 (ä=a) sortiert:
Select Name from Kunde order by 1
Baumgartner Bäumel Baumüller Gibt es eine Möglichkeit nach DIN 5007 Var2 zu sortieren (ä=ae)? Oder ist das dann nur clientseitig möglich? Grüße |
AW: Firebird Sortierung Umlaute
Oder eine andere Collation einstellen bzw. einrichten.
|
AW: Firebird Sortierung Umlaute
Oder (wenn auch etwas umständlich):
PHP-Quellcode:
Select
Name from Kunde order by replace(replace(replace(Name, 'ä', 'ae'), 'Ä', 'Ae'), 'ö', 'oe') -- usw |
AW: Firebird Sortierung Umlaute
Ich bin nicht ganz sicher, aber evtl. gibt es auch bei Firebird das COLLATE in der ORDER BY-Klausel.
|
AW: Firebird Sortierung Umlaute
Zitat:
|
AW: Firebird Sortierung Umlaute
Vielleicht hilft das
SQL-Code:
create collation ISO8859_1_UNICODE for ISO8859_1;
![]() |
AW: Firebird Sortierung Umlaute
nope, Sortierung bleib bei lexikalischer Sortierung (ä=a) und nicht wie gewünscht Telefonliste (ä=ae)
|
AW: Firebird Sortierung Umlaute
Jo, kann man auch im ORDER BY angeben.
![]() ![]() Die Collation gibt an, unter welchen sprachlichen Regeln die Sortierung und Indizierung vorgenommen werden, also wie der Stringverleich arbeitet, denn je nach Sprache gibt es da Unterschiede. Das betrifft nicht nur die Buchstaben und Sonderzeichen, sondern auch die Groß-/Kleinschreibung. |
AW: Firebird Sortierung Umlaute
Zitat:
Und um alle Klarheiten zu beseitigen:
Code:
bringt genau das gleiche "falsche" Ergebnis - jetzt sogar mit einer eigenen Sortierspalte:
Select Name from Kunde order by 1 collate de_de
Und nein, eine Sortierspalte ist nicht wirklich hilfreich, da es nicht nur eine Tabelle betrifft.... Grüße |
AW: Firebird Sortierung Umlaute
Zitat:
Oder die ATTRIBUTE mit der passenden LOCALE. ![]() Wieso eine Sortierspalte? ORDER BY mit "passendem" COLLATE und schon wird die originale Spalte anders sortiert, als es die COLLATION der Spalte (in der Tabelle) definiert hat. |
AW: Firebird Sortierung Umlaute
Zitat:
wo? Bei mKinzlers code? nein da fehlt nix: Zitat:
Code:
create collation lat_uni
for iso8859_1 from external ('ISO8859_1_UNICODE') Zitat:
|
AW: Firebird Sortierung Umlaute
Liste der Anhänge anzeigen (Anzahl: 1)
Möglicherweise könnte das Helfen
DISABLE-EXPANSIONS |
AW: Firebird Sortierung Umlaute
Es kann natürlich auch sein, dass Firebird "vorinstalliert" nur die DIN 5007 Variante 1 dabei hat.
de_DE scheint jedenfalls Variante 1 zu sein und sonst fand ich in der Liste nichts Anderes. Da müsstest du dann wohl diese Sortierung von EXTERN laden. Oder du nimmst eine andere Sprache, welche auch Ä kennt und nach Ä=AE sortiert, aber k.A. was und ob es das gibt. Im Notfall mal direkt an die Firebird-Leute wenden. Oder notfalls
Delphi-Quellcode:
.
ORDER BY ErsetzeÄdurchAE(DeineSpalte)
Blos, falls jemand die Problematik nicht kennt und sich informieren will, worum es geht: ![]() |
AW: Firebird Sortierung Umlaute
Zitat:
Code:
oder
create collation de_de0
for iso8859_1 from de_de 'DISABLE-EXPANSIONS=0'
Code:
create collation de_de1
for iso8859_1 from de_de 'DISABLE-EXPANSIONS=1' zeigt keine Wirkung (d.h. immer noch ä=a) und
Code:
geht nicht wegen der 1bpc Beschränkung.
create collation iso8859_1_unicode for iso8859_1
'DISABLE-EXPANSIONS=1' Zitat:
genau dazu habe ich keine Info gefunden. Es wird zwar beschrieben, dass ich die Sortierung per library bereit stellen kann, aber welche Methoden exportiert werden müssen habe ich nicht gefunden. Auf der anderen Seite scheint es mit dem Characterset Unicode ja zu funktionieren. Vielleicht ist das langfristig eh die bessere Variante nach dem Umstieg auf ein Unicode-Delphi auch die Datenbank umzustellen... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:41 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz