AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Firebird Sortierung Umlaute

Firebird Sortierung Umlaute

Ein Thema von Lemmy · begonnen am 12. Jul 2016 · letzter Beitrag vom 12. Jul 2016
Antwort Antwort
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.388 Beiträge
 
Delphi 10.4 Sydney
 
#1

AW: Firebird Sortierung Umlaute

  Alt 12. Jul 2016, 15:24
Oder eine andere Collation einstellen bzw. einrichten.
Hast Du da irgend einen Tipp für mich? Anscheinend klappt es mit CharSet UTF8 und Collation Unicode - aber für ISO8859_1 habe ich bisher keine andere collation gefunden die funktioniert.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.869 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Firebird Sortierung Umlaute

  Alt 12. Jul 2016, 15:47
Vielleicht hilft das

create collation ISO8859_1_UNICODE for ISO8859_1; http://firebirdsql.org/refdocs/langr...ollations.html
Markus Kinzler
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.388 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Firebird Sortierung Umlaute

  Alt 12. Jul 2016, 16:03
nope, Sortierung bleib bei lexikalischer Sortierung (ä=a) und nicht wie gewünscht Telefonliste (ä=ae)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.326 Beiträge
 
Delphi 12 Athens
 
#4

AW: Firebird Sortierung Umlaute

  Alt 12. Jul 2016, 16:08
Jo, kann man auch im ORDER BY angeben.

http://www.destructor.de/firebird/charsets.htm
http://firebirdsql.org/refdocs/langr...ollations.html

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.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (12. Jul 2016 um 16:31 Uhr)
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.388 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Firebird Sortierung Umlaute

  Alt 12. Jul 2016, 16:31
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.
und wie genau hilft mir das weiter, wenn die default-Einstellung der Datenbank de_de lautet, es keine andere Einstellung für Deutschland gibt und ich mit der Sortierreihenfolge von de_de nicht einverstanden bin?

Und um alle Klarheiten zu beseitigen:

Code:
 Select Name from Kunde order by 1 collate de_de
bringt genau das gleiche "falsche" Ergebnis - jetzt sogar mit einer eigenen Sortierspalte:



BachBach
BachlBachl
BächleinBaechlein
BachmannBachmann



Und nein, eine Sortierspalte ist nicht wirklich hilfreich, da es nicht nur eine Tabelle betrifft....

Grüße
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.326 Beiträge
 
Delphi 12 Athens
 
#6

AW: Firebird Sortierung Umlaute

  Alt 12. Jul 2016, 16:33
nope, Sortierung bleib bei lexikalischer Sortierung (ä=a) und nicht wie gewünscht Telefonliste (ä=ae)
Da fehlt das FROM und dort eine Collation angeben, welche wie gewünscht sortiert.
Oder die ATTRIBUTE mit der passenden LOCALE.

http://firebirdsql.org/refdocs/langr...llation-create

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.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (12. Jul 2016 um 16:38 Uhr)
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.388 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Firebird Sortierung Umlaute

  Alt 12. Jul 2016, 16:41
nope, Sortierung bleib bei lexikalischer Sortierung (ä=a) und nicht wie gewünscht Telefonliste (ä=ae)
das fehlt das FROM

wo? Bei mKinzlers code? nein da fehlt nix:

Zitat:
Examples:

Simplest form, using the name as found in the .conf file (case-insensitive):

create collation iso8859_1_unicode for iso8859_1
aber ich habe auch die Langform schon probiert...

Code:
create collation lat_uni
  for iso8859_1
  from external ('ISO8859_1_UNICODE')
und dort eine Callation angeben, welche wie gewünscht sortiert.
ich weiß nicht.. liegt vermutlich an mir, aber ich dachte, dass sich die Diskussion aktuell genau um den Punkt dreht.. Welche soll ich denn angeben damit das funktioniert?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.869 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Firebird Sortierung Umlaute

  Alt 12. Jul 2016, 16:48
Möglicherweise könnte das Helfen

DISABLE-EXPANSIONS
Angehängte Grafiken
Dateityp: jpg DISABLE-EXPANSIONS.jpg (62,9 KB, 16x aufgerufen)
Markus Kinzler
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.388 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: Firebird Sortierung Umlaute

  Alt 12. Jul 2016, 17:32
Möglicherweise könnte das Helfen

DISABLE-EXPANSIONS
nope, gilt nur für 1 byte per character und ein

Code:
create collation de_de0
  for iso8859_1
  from de_de
  'DISABLE-EXPANSIONS=0'
oder

Code:
create collation de_de1
  for iso8859_1
  from de_de
  'DISABLE-EXPANSIONS=1'

zeigt keine Wirkung (d.h. immer noch ä=a) und

Code:
create collation iso8859_1_unicode for iso8859_1
'DISABLE-EXPANSIONS=1'
geht nicht wegen der 1bpc Beschränkung.


Da müsstest du dann wohl diese Sortierung von EXTERN laden.

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...
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.326 Beiträge
 
Delphi 12 Athens
 
#10

AW: Firebird Sortierung Umlaute

  Alt 12. Jul 2016, 16:51
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 ORDER BY ErsetzeÄdurchAE(DeineSpalte) .



Blos, falls jemand die Problematik nicht kennt und sich informieren will, worum es geht: https://de.wikipedia.org/wiki/Alphabetische_Sortierung
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (12. Jul 2016 um 16:54 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:00 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