ORDER BY bei Positions-Nr. (String)

Hallo
Ein SELECT soll Daten aufsteigend nach der Pos.Nr. liefern.
Ich verwende “ORDER BY STRING_TO_ARRAY(pos, ‘.’) ASC”
Wie kann ich erreichen, dass
1.1.1.10
nicht vor
1.1.1.1
sondern nach
1.1.1.9
sortiert wird.
mit 1.1…1.10 usw. klappt es, bei längeren Positions-Nummern nicht.
bestimmt weiß einer Rat.
Gottfried

so vielleicht?

edb=*# select * from gottfried ;
    s     
----------
 1.1.1.9
 1.1.1.1
 1.1.1.10
 1.1.1.2
(4 rows)

edb=*# select * from gottfried order by string_to_array(s,'.')::int[];
    s     
----------
 1.1.1.1
 1.1.1.2
 1.1.1.9
 1.1.1.10
(4 rows)

edb=*# 

Cool, könnte ins Auge gehen, wenn es keine INTs sind.

Ja, das wäre dann doof. Ich gehe mal fest davon aus, daß der Fragesteller passende Check-Constraints hat, damit das immer valide ist …

hallo
das funktioniert, vielen Dank. Die Werte sind generell Positions-Nummern, immer in INTs wandelbar.
Viele Grüße, Frohe Weihnachten
Gottfried

Dieses Thema wurde automatisch 60 Tage nach der letzten Antwort geschlossen. Es sind keine neuen Antworten mehr erlaubt.