Ergebnis 1 bis 3 von 3

Thema: Sortierungsproblem

  1. #1
    Roque ist offline Neuer Benutzer
    Registriert seit
    04.03.2008
    Beiträge
    1

    Standard Sortierungsproblem

    Hallo,

    ich habe ein eigentlich recht simples Problem und hoffe mir kann hier geholfen werden.
    Ich habe Einträge in einer Tabelle von z.B. A1 bis A30 und möchte, dass mir die Daten ganz normal sortiert werden, also A1, A2, A3, A4 .... A10, A11 usw.
    Wenn ich nun aber die Daten mit ORDER BY auslese, sortiert er mir die immer so: A1, A10, A11, A12, .... A2, A20, A21 ......

    Kann man da irgendwie noch einen zusätzlichen Parameter mit einbringen oder wie kann ich das hinbekommen?

    Gruß
    Heiko

  2. #2
    Gisman ist offline Erfahrener Benutzer
    Registriert seit
    20.01.2006
    Ort
    Pfalz
    Beiträge
    794

    Standard

    Das kommt daher, das die Indexzahl als String abgebildet ist. Du könntest sie entweder als Integerfeld einfügen oder über eine Funktion den "Zahlenanteil" des Strings besimmen und danach sortieren.
    z.B.

    Code:
    cast (substring("A10" from 2 for 2) as integer)
    Gruß Uwe
    Have a lot of fun!

  3. #3
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.472

    Standard

    Zitat Zitat von Roque Beitrag anzeigen
    Hallo,

    ich habe ein eigentlich recht simples Problem und hoffe mir kann hier geholfen werden.
    Ich habe Einträge in einer Tabelle von z.B. A1 bis A30 und möchte, dass mir die Daten ganz normal sortiert werden, also A1, A2, A3, A4 .... A10, A11 usw.
    Wenn ich nun aber die Daten mit ORDER BY auslese, sortiert er mir die immer so: A1, A10, A11, A12, .... A2, A20, A21 ......

    Kann man da irgendwie noch einen zusätzlichen Parameter mit einbringen oder wie kann ich das hinbekommen?

    Gruß
    Heiko
    Code:
    test=*# select * from my_sort order by 1;
      t
    -----
     A1
     A10
     A2
     A20
     A3
     A4
    (6 rows)
    
    test=*# select * from my_sort order by substring(t,1,1), substring(t,2,2)::int;
      t
    -----
     A1
     A2
     A3
     A4
     A10
     A20
    (6 rows)
    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Links: Tobias Bauer - IT- und Funkdienstleistungen   -   Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen   -   Funkforum