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

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.

cast (substring("A10" from 2 for 2) as integer)

Gruß Uwe



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