![]() |
AW: Order by - aufsteigende Zahlenreihe ...
Wenn das alles nicht hilft, dann füg' doch eine Sortierspalte ein. Da stehen die Daten dann so drin wie deine DB sortieren kann z.B. HP 100 -> HP0100, HP 1000 -> HP1000 usw.
Zitat:
Gruß K-H |
AW: Order by - aufsteigende Zahlenreihe ...
Zitat:
|
AW: Order by - aufsteigende Zahlenreihe ...
Hallo,
dann musst du halt lokal sortieren per Code (.Sort -> MyOwnCompare). Heiko |
AW: Order by - aufsteigende Zahlenreihe ...
Zitat:
Ein systematischer Ansatz wäre m.E. alle Zahlen im String (erlaubte Trennzeichen wären zu definieren ..) per LPAD auf eine definierte, genügend große Länge bringen, z.B. 15 Zeichen oder auch 20, eigentlich egal. Wieder an der Ursprungsstelle in den String setzen und auf dem Ergebnis sortieren. In FB würde man wohl ein Funktion schreiben müssen, ist vielleicht problematisch ohne RegEx, im Client sollte es kein Problem sein. Aber ist FB eigentlich bei Dir im Einsatz oder beim TE? Den natural sort Hinweis von Himitsu finde ich auch interessant. |
AW: Order by - aufsteigende Zahlenreihe ...
Zitat:
|
AW: Order by - aufsteigende Zahlenreihe ...
Zitat:
![]() |
AW: Order by - aufsteigende Zahlenreihe ...
In Firebird kannst du der Spalte eine Collation mit dem Attribut 'NUMERIC-SORT=1' zuordnen, dann wird so sortiert wie dein Kunde das möchte.
![]() Ich hab's selber aber nicht getestet. |
AW: Order by - aufsteigende Zahlenreihe ...
Zitat:
![]() Aber Du bist ja schon in Urlaub! :) |
AW: Order by - aufsteigende Zahlenreihe ...
Wäre es schneller/ einfacher, den (jeden) Zahlenbereich mit führenden 0 zu erweitern (meinetwegen auf 8 Stellen) und die DB dann mit einer einfachen Sortierung zu betrauen?
|
AW: Order by - aufsteigende Zahlenreihe ...
Wenn das nur einmal pro Datensatz gemacht wird, z.B. als zusätzliche Spalte im SELECT, dann ist es zumindestens nicht sehr viel langsamer.
Aber wenn dann mal einer auf die Idee kommt und eine Zahl mit mehr als 8 Dezimalstellen verwendet, dann geht das natürlich nicht mehr. Der Bearbeitung und Erstellen des Vergleichstrings ist aber vermutlich/bestimmt etwas langsamer, als eine gut implementierter Vergleichsfunktion. Als Vergleich:
Delphi-Quellcode:
ist schneller als ein
if s = '123' then
Delphi-Quellcode:
,
if s = IntToStr(123) then
bzw.
Delphi-Quellcode:
ist schneller als ein
if i = 123 then
Delphi-Quellcode:
.
if IntToStr(i) = '123' then
Kommt dann darauf an, wie gut der Sortieralgo ist, also wieviele Vergleiche der benötigt und wie groß der Unterschied zwischen der ErweitereMitNullen-Funktion ist, gegenüber der zusätzlichen Zeit für eine aufwändigere Vergleichsfunktion. Wenn die Strings für jeden einzelnen Vergleich so umgewandelt werden (mit Nullen füllen), dann würde das jedenfalls schnell extrem langsam. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03: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-2025 by Thomas Breitkreuz