From: | Andreas Kretschmer <akretschmer(at)internet24(dot)de> |
---|---|
To: | pgsql-de-allgemein(at)postgresql(dot)org |
Subject: | Re: Sortierreihenfolge |
Date: | 2011-12-02 17:01:21 |
Message-ID: | 4ED90461.3000105@internet24.de |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-de-allgemein |
Am 02.12.2011 17:39, schrieb bernhard:
>
> Hallo,
>
> wieder mal eine Frage zur Sortierung. Evtl. ja ganz einfach, aber so
> recht will es nicht klappen.
>
> Beispiel:
>
> CT, E58, 1, 100, 20, 200, 25, 12
>
> soll werden:
>
> 1, 12, 20, 25, 100, 200, CT, E58
>
> also die Zahlen numerisch sortiert und dann die Texte alphabetisch.
>
> Ich habe es mit ORDER BY lpad (code, 3, '0') und ähnlichem versucht, und
> es sieht auch alles so ähnlich aus, aber halt nie genau so.
>
> Auch mit zig mal hin- her casten, bin ich nicht so recht weitergekommen.
>
> Hat jemand einen Tip für mich.
Ist zwar ecklig, aber das ist Dein Tabellendesign ja auch ;-)
> test=*# select * from bernhard ;
> t
> -----
> CT
> E58
> 1
> 100
> 20
> 200
> 25
> 12
> (8 rows)
>
> test=*# select * from ( select * from bernhard where length(regexp_replace(t,'[^0-9]','','g')) = length(t) order by regexp_replace(t,'[^0-9]','','g')::int) foo union all (select * from bernhard where length(regexp_replace(t,'[^0-9]','','g')) != length(t) order by t) ;
> t
> -----
> 1
> 12
> 20
> 25
> 100
> 200
> CT
> E58
> (8 rows)
HTH, Andreas
--
Andreas Kretschmer
http://internet24.de
From | Date | Subject | |
---|---|---|---|
Next Message | bernhard | 2011-12-02 17:05:59 | Re: Sortierreihenfolge |
Previous Message | bernhard | 2011-12-02 16:39:45 | Sortierreihenfolge |