[FOSSGIS-Talk] Punkte in einer Attributtabelle ordnen

Oliver Bienert obienert at waldwerk.de
Mi Dez 19 11:53:38 CET 2012


On 12/18/2012 07:49 PM, klaussss at web.de wrote:
> Hallo,
> in einer Attributtabelle eines Layers stehen ca 100 Punkte. Die Tabelle
> hat 2 Spalten. In der einen Spalte stehen arabische Zahlen. Aber der Typ
> des Attributs ist trotzdem als "Text" vordefiniert worden. In der
> anderen Spalte stehen 'richtige' Texte. Nun sollen alle Zeilen so
> geordnet werden, dass die Zahlen aufsteigen.
> * (wie) geht das?
> * geht das auch wenn Zahlen z.B. 127, 128, 128a, 129 heissen?

In postgresql gibt es die Funktion substring, die mit regulären 
Ausdrücken arbeiten kann:

The |substring| function with two parameters, |substring(string from 
pattern)|, provides extraction of a substring that matches a POSIX 
regular expression pattern. It returns null if there is no match, 
otherwise the portion of the text that matched the pattern.

Du könntest also in einer select-Anweisung zweimal auf die betreffende 
Spalte zugreifen, und die Hausnummer aufsplitten in Zahl und Buchstabe. 
Mit einem regulären Ausdruck kannst du auch eventuelle Leerzeichen 
zwischen Zahl und Buchstabe berücksichtigen:

substring(deinspaltenname from "^[0-9]+") für die Zahl und
substring(deinspaltenname from "[a-zA-Z]+$") für den Buchstaben

dann cast zu integer und order by.



Gruss Oliver

> Danke und Gruß
> ...............................................
> FOSSGIS 2013, Die Konferenz für Open Source GIS mit OpenData
> und OpenStreetMap erstmals in der Schweiz!
> 12.-14. Juni, HSR, Rapperswil
> http://www.fossgis.de/konferenz/2013/
>
> _______________________________________________
> FOSSGIS-Talk-Liste mailing list
> FOSSGIS-Talk-Liste at fossgis.de
> https://lists.fossgis.de/mailman/listinfo/fossgis-talk-liste
>