Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Order by - aufsteigende Zahlenreihe ... (https://www.delphipraxis.net/181250-order-aufsteigende-zahlenreihe.html)

erich.wanker 29. Jul 2014 12:56

Datenbank: firebird • Version: 2.5 • Zugriff über: Zeos LIB

Order by - aufsteigende Zahlenreihe ...
 
Hallo Leute ..

eine Frage, die schon zig tausendmal gestellt wurde .. SORRY !!!

Aber irgendwie steh ich auf der Leitung:

Select * from Tabelle ORDER BY STRINGFIELD ..

ergibt bei mir immer:
1
10
11
12
13
..
19
2
20
21
a
b
c
d
.
.


.. DAS FELD IST EIN STRING!! .. Gibts da nicht eine Möglichkeit, ein Stringfeld so zu filtern und zu sortieren, dass die Zahlenreihe auch richtig dargestellt wird?

Vielen Dank für Infos
Erich

DeddyH 29. Jul 2014 13:01

AW: Order by - aufsteigende Zahlenreihe ...
 
Versuch es mal mit LPAD.
SQL-Code:
ORDER BY LPAD(StringField, 20)

Uwe Raabe 29. Jul 2014 13:09

AW: Order by - aufsteigende Zahlenreihe ...
 
Alternativ geht vielleicht auch

Delphi-Quellcode:
CAST (StringField as integer)

DeddyH 29. Jul 2014 13:12

AW: Order by - aufsteigende Zahlenreihe ...
 
Das dürften die nicht-numerischen Werte vereiteln.

Neutral General 29. Jul 2014 13:14

AW: Order by - aufsteigende Zahlenreihe ...
 
Was auch geht ist dass man zuerst nach char_length(feld) sortiert und dann nach dem feld selbst. Dann kommt auch eine bessere Sortierung bei raus. (evtl. braucht man für char_length noch ein trim um das Feld)

erich.wanker 29. Jul 2014 14:07

AW: Order by - aufsteigende Zahlenreihe ...
 
Danke an alle ..

Hab jetzt eine Lösung gefunden :-) .. Hilfreich waren die Angaben LPAD / RPAD / Trim ...

Dadurch hab ich jetzt (mein Stringfield lautet:OBJECT_NAME):

Code:
my_sql_10:=' ORDER BY CASE WHEN TRIM(OBJECT_NAME) SIMILAR TO '+#39+'\-?[0-9]+'+#39+' ESCAPE '+#39+'\'+#39+' THEN CAST(OBJECT_NAME AS INTEGER) ELSE 9999999 END';
Danke
Erich

baumina 29. Jul 2014 14:49

AW: Order by - aufsteigende Zahlenreihe ...
 
dann werden aber die Buchstaben nicht sortiert (immer 9999999), oder seh ich das falsch?

erich.wanker 29. Jul 2014 15:10

AW: Order by - aufsteigende Zahlenreihe ...
 
Liste der Anhänge anzeigen (Anzahl: 1)
Stimmt ... jetzt werden die Buchstaben nicht mehr richtig sortiert .. bei meinem test hab ich nur jeweils einen Buchstaben eingegeben .. da ist es mir nicht aufgefallen

:-(

Sir Rufo 29. Jul 2014 15:11

AW: Order by - aufsteigende Zahlenreihe ...
 
Zitat:

Zitat von baumina (Beitrag 1266933)
dann werden aber die Buchstaben nicht sortiert (immer 9999999), oder seh ich das falsch?

So ist das eben, wenn man die falsche Struktur für die Daten wählt, dann fällt einem das bei der Abfrage auf die Füße ;)

baumina 29. Jul 2014 15:15

AW: Order by - aufsteigende Zahlenreihe ...
 
Zitat:

Zitat von Sir Rufo (Beitrag 1266941)
So ist das eben, wenn man die falsche Struktur für die Daten wählt, dann fällt einem das bei der Abfrage auf die Füße ;)

Ich hab noch ein viel schlimmeres Problem ... Kunde mag folgendes "richtig" sortiert haben:
Code:
HP100
HP100Q
HP200
HP1000
HP1000Q
HP2000
:shock:


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:50 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz