# ORDER BY: in natÃ¼rlicher Reihenfolge sortieren

**URL:** https://www.pg-forum.de/t/order-by-in-nata-rlicher-reihenfolge-sortieren/3171
**Category:** SQL
**Created:** [25. April 2008 um 10:31 UTC](https://www.pg-forum.de/t/order-by-in-nata-rlicher-reihenfolge-sortieren/3171 "2008-04-25T10:31:28Z")
**Posts on this page:** 18
**Page:** 1

<div class="post-metadata">

### Author: ![soezkan](https://www.pg-forum.de/letter_avatar_proxy/v4/letter/s/e19b73/32.png) [@soezkan](https://www.pg-forum.de/u/soezkan)
#### Post date: [25. April 2008 um 10:31 UTC](https://www.pg-forum.de/t/order-by-in-nata-rlicher-reihenfolge-sortieren/3171/1 "2008-04-25T10:31:28Z")

</div>

Hallo Leute,

ich suche eine Möglichkeit meine ganz einfache SELECT zu sortieren, so dass am Ende die Reihenfolge natürlich ist.  
Wenn ich ein ORDER BY mache, kommt nämlich das hier bei raus:

**Strasse 1  
Strasse 10  
Strasse 11  
Strasse 12  
Strasse 2  
Strasse 3  
Strasse 4  
Strasse 5  
Strasse 6  
Strasse 7  
Strasse 8  
Strasse 9**

Geht das nicht so, dass nach …

…  
**Strasse 9  
Strasse 10  
Strasse 11  
Strasse 12**

usw. geordnet wird?

Sorry für die doofe Anfängerfrage! Ich habe aber sonst nichts Brauchbares  
gefunden, deshalb mein “neues Thema”

Viele Grüße  
Soezkan

---

<div class="post-metadata">

### Author: ![achilles\_69](https://www.pg-forum.de/letter_avatar_proxy/v4/letter/a/839c29/32.png) [@achilles\_69](https://www.pg-forum.de/u/achilles_69)
#### Post date: [25. April 2008 um 10:43 UTC](https://www.pg-forum.de/t/order-by-in-nata-rlicher-reihenfolge-sortieren/3171/2 "2008-04-25T10:43:03Z")

</div>

Du musst die Daten so angeben:

```nohighlight
Strasse 01
Strasse 02
...
Strasse 09
Strasse 10
...

```

da die Sortierung als “Text” stattfindet, und da ist “10” eben kleiner als “2”. Eine andere Möglichkeit wäre, die Zahlen in ein separates Feld zu packen.  
Wenn der Aufbau immer ähnlich ist, kann man natürlich Text und Zahl mit einer Funktion trennen und dann sortieren.

---

<div class="post-metadata">

### Author: ![ads](https://www.pg-forum.de/letter_avatar_proxy/v4/letter/a/8e7dd6/32.png) [@ads](https://www.pg-forum.de/u/ads)
#### Post date: [25. April 2008 um 10:47 UTC](https://www.pg-forum.de/t/order-by-in-nata-rlicher-reihenfolge-sortieren/3171/3 "2008-04-25T10:47:09Z")

</div>

Da gibt es nicht viel hinzuzufügen …  
Der beste Weg wäre wirklich, die Hausnummer in eingetrenntes Feld zu packen (aber dort auch als Text hinterlegen, es gibt zu viele Sonderfälle).

---

<div class="post-metadata">

### Author: ![soezkan](https://www.pg-forum.de/letter_avatar_proxy/v4/letter/s/e19b73/32.png) [@soezkan](https://www.pg-forum.de/u/soezkan)
#### Post date: [25. April 2008 um 10:54 UTC](https://www.pg-forum.de/t/order-by-in-nata-rlicher-reihenfolge-sortieren/3171/4 "2008-04-25T10:54:34Z")

</div>

Danke für die Antwort. Das was ich hier geschrieben habe, war ein Beispiel.  
Eigentlich (hätte ich auch gleich schreiben können 😉 ) habe ich zwei Tabellen:

```nohighlight
table adress_values

int id
int fid
varchar value

table adress_fields

int fid
varchar description

SELECT value FROM adress_values WHERE fid = 'strasse' ORDER BY value;

```

Die Abfrage ist eigentlich ok. Aber wenn ich beispielsweise nach Hausnummern sortiere, dann ist ist die Reihefolge bspw.:

Hausnummer:  
1  
2  
212  
23  
245  
299  
3  
32  
4  
5  
usw.

Was mache ich falsch bzw. wie könnte man das lösen!

Vielen Dank schonmal jetzt,  
Soezkan

---

<div class="post-metadata">

### Author: ![akretschmer](https://www.pg-forum.de/letter_avatar_proxy/v4/letter/a/a6a055/32.png) [@akretschmer](https://www.pg-forum.de/u/akretschmer)
#### Post date: [25. April 2008 um 10:58 UTC](https://www.pg-forum.de/t/order-by-in-nata-rlicher-reihenfolge-sortieren/3171/5 "2008-04-25T10:58:42Z")

</div>

> [@soezkan](#):
>
> Hallo Leute,
> 
> ich suche eine Möglichkeit meine ganz einfache SELECT zu sortieren, so dass am Ende die Reihenfolge natürlich ist.  
> Wenn ich ein ORDER BY mache, kommt nämlich das hier bei raus:  
>   
>   
> Viele Grüße  
> Soezkan

Warum das so ist, wurde ja schon gesagt. Als schnelle Lösung:

```plaintext
test=*# select * from str;
  name
--------
 str 1
 str 2
 str 3
 str 10
 str 9
 str 11
 str 8
 str 12
(8 rows)

test=*# select * from str order by regexp_replace(name,'[^0-9]','','g')::int ;
  name
--------
 str 1
 str 2
 str 3
 str 8
 str 9
 str 10
 str 11
 str 12
(8 rows)

```

Andreas

---

<div class="post-metadata">

### Author: ![akretschmer](https://www.pg-forum.de/letter_avatar_proxy/v4/letter/a/a6a055/32.png) [@akretschmer](https://www.pg-forum.de/u/akretschmer)
#### Post date: [25. April 2008 um 11:00 UTC](https://www.pg-forum.de/t/order-by-in-nata-rlicher-reihenfolge-sortieren/3171/6 "2008-04-25T11:00:35Z")

</div>

> [@soezkan](#):
>
> Was mache ich falsch bzw. wie könnte man das lösen!
> 
> Vielen Dank schonmal jetzt,  
> Soezkan

Nach INT casten.

Andreas

---

<div class="post-metadata">

### Author: ![soezkan](https://www.pg-forum.de/letter_avatar_proxy/v4/letter/s/e19b73/32.png) [@soezkan](https://www.pg-forum.de/u/soezkan)
#### Post date: [25. April 2008 um 11:07 UTC](https://www.pg-forum.de/t/order-by-in-nata-rlicher-reihenfolge-sortieren/3171/7 "2008-04-25T11:07:24Z")

</div>

Sorry, aber ich habs noch nicht hinbekommen. Wenn ich

```nohighlight
 
SELECT value 
FROM adress_values 
WHERE fid = 'strasse' 
ORDER BY regexp_replace(value,'[^0-9]','','g')::int;

```

aufrufe, bekomme ich eine Fehlermeldung:  
… the right syntax to use near ‘(value,’[^0-9]’,’’,‘g’)::int’ at line 12 query:

Und wo bringe ich ein ASC bzw. DESC unter?

1000 Dank für weitere Hilfe,  
Soezkan

---

<div class="post-metadata">

### Author: ![akretschmer](https://www.pg-forum.de/letter_avatar_proxy/v4/letter/a/a6a055/32.png) [@akretschmer](https://www.pg-forum.de/u/akretschmer)
#### Post date: [25. April 2008 um 11:11 UTC](https://www.pg-forum.de/t/order-by-in-nata-rlicher-reihenfolge-sortieren/3171/8 "2008-04-25T11:11:07Z")

</div>

> [@soezkan](#):
>
> Sorry, aber ich habs noch nicht hinbekommen. Wenn ich
> 
> ```plaintext
>  
> SELECT value 
> FROM adress_values 
> WHERE fid = 'strasse' 
> ORDER BY regexp_replace(value,'[^0-9]','','g')::int;
> 
> ```
> 
> aufrufe, bekomme ich eine Fehlermeldung:  
> … the right syntax to use near ‘(value,’[^0-9]‘,’‘,‘g’)::int’ at line 12 query:
> 
> Und wo bringe ich ein ASC bzw. DESC unter?
> 
> 1000 Dank für weitere Hilfe,  
> Soezkan

Welche Version? regexp\_replace ist etwas neu, seit 8.1 oder so erst. Das DESC oder ASC käme einfach nach dem Cast-Operator, mit Leerzeichen, is klar, oder?

Andreas

---

<div class="post-metadata">

### Author: ![soezkan](https://www.pg-forum.de/letter_avatar_proxy/v4/letter/s/e19b73/32.png) [@soezkan](https://www.pg-forum.de/u/soezkan)
#### Post date: [25. April 2008 um 11:14 UTC](https://www.pg-forum.de/t/order-by-in-nata-rlicher-reihenfolge-sortieren/3171/9 "2008-04-25T11:14:10Z")

</div>

Ups, ich glaube ich bin hier falsch. Sorry, denn ich benutze MySQL. Ich dachte, das ist egal. Bin eben ein Einstieger was SQL anbelangt. Hm.  
Trotzdem vielleicht noch einen Tipp, was ich da machen könnte?

Danke,  
Soezkan

---

<div class="post-metadata">

### Author: ![akretschmer](https://www.pg-forum.de/letter_avatar_proxy/v4/letter/a/a6a055/32.png) [@akretschmer](https://www.pg-forum.de/u/akretschmer)
#### Post date: [25. April 2008 um 11:15 UTC](https://www.pg-forum.de/t/order-by-in-nata-rlicher-reihenfolge-sortieren/3171/10 "2008-04-25T11:15:06Z")

</div>

> [@soezkan](#):
>
> Ups, ich glaube ich bin hier falsch. Sorry, denn ich benutze MySQL. Ich dachte, das ist egal. Bin eben ein Einstieger was SQL anbelangt. Hm.  
> Trotzdem vielleicht noch ein Tipp, was ich da machen könnte?
> 
> Danke,  
> Soezkan

Klar: PostgreSQL nutzen.

Andreas

---

<div class="post-metadata">

### Author: ![soezkan](https://www.pg-forum.de/letter_avatar_proxy/v4/letter/s/e19b73/32.png) [@soezkan](https://www.pg-forum.de/u/soezkan)
#### Post date: [25. April 2008 um 11:16 UTC](https://www.pg-forum.de/t/order-by-in-nata-rlicher-reihenfolge-sortieren/3171/11 "2008-04-25T11:16:34Z")

</div>

Ich habe dazu auf meinem Serverli aber nicht die Möglichkeit und kein  
Geld das umsetzen zu lassen. Bin ich raus? Oder gibts auch ne Lösung für mich?

---

<div class="post-metadata">

### Author: ![akretschmer](https://www.pg-forum.de/letter_avatar_proxy/v4/letter/a/a6a055/32.png) [@akretschmer](https://www.pg-forum.de/u/akretschmer)
#### Post date: [25. April 2008 um 11:19 UTC](https://www.pg-forum.de/t/order-by-in-nata-rlicher-reihenfolge-sortieren/3171/12 "2008-04-25T11:19:55Z")

</div>

> [@soezkan](#):
>
> Bin ich raus? Oder gibts auch ne Lösung für mich?

Ja, nein. _g_

MySQL kann IMHO nicht nach dem Resultat einer Funktion sortieren. Oder doch? Ich weiß nicht. Schau einfach in die Doku zu MySQL, was es da an Stringfunktionen gibt, und probier es. Es gibt halt Dinge, die ich nicht gern anfasse: Kot, Windows, MySQL gehören dazu.

Andreas

---

<div class="post-metadata">

### Author: ![soezkan](https://www.pg-forum.de/letter_avatar_proxy/v4/letter/s/e19b73/32.png) [@soezkan](https://www.pg-forum.de/u/soezkan)
#### Post date: [25. April 2008 um 11:23 UTC](https://www.pg-forum.de/t/order-by-in-nata-rlicher-reihenfolge-sortieren/3171/13 "2008-04-25T11:23:38Z")

</div>

ja und es gibt Deutsche, die alle Amerikaner scheisse finden, weil Sie kein englisch können 😉

---

<div class="post-metadata">

### Author: ![soezkan](https://www.pg-forum.de/letter_avatar_proxy/v4/letter/s/e19b73/32.png) [@soezkan](https://www.pg-forum.de/u/soezkan)
#### Post date: [25. April 2008 um 12:46 UTC](https://www.pg-forum.de/t/order-by-in-nata-rlicher-reihenfolge-sortieren/3171/14 "2008-04-25T12:46:30Z")

</div>

> [@akretschmer](#):
>
> Es gibt halt Dinge, die ich nicht gern anfasse: Kot, Windows, MySQL gehören dazu.
> 
> Andreas

Ich habe eine Lösung gefunden (zumindest für MySQL):

```plaintext
SELECT value 
FROM adress_values 
WHERE fid = 'strasse' 
ORDER BY value+0

```

---

<div class="post-metadata">

### Author: ![ads](https://www.pg-forum.de/letter_avatar_proxy/v4/letter/a/8e7dd6/32.png) [@ads](https://www.pg-forum.de/u/ads)
#### Post date: [25. April 2008 um 16:31 UTC](https://www.pg-forum.de/t/order-by-in-nata-rlicher-reihenfolge-sortieren/3171/15 "2008-04-25T16:31:45Z")

</div>

Das funktioniert nicht wirklich, oder?

Das würde bedeuten, das Mysql Texte addieren kann … und dann auch noch falsch addiert. Wenn man überhaupt irgendwas (einen Text mit Nummern drin) in Zahlen umwandeln will, bricht man ab, sobald man irgendetwas findet, was nicht 0-9 entspricht. Bei dir kommt der Straßenname aber vor der Zahl …

Ist das krank …

---

<div class="post-metadata">

### Author: ![progs](https://www.pg-forum.de/user_avatar/www.pg-forum.de/progs/32/7_2.png) [@progs](https://www.pg-forum.de/u/progs)
#### Post date: [26. April 2008 um 07:16 UTC](https://www.pg-forum.de/t/order-by-in-nata-rlicher-reihenfolge-sortieren/3171/16 "2008-04-26T07:16:30Z")

</div>

Hab das mal getestet (MySQL - 5.0.22) und bei mir funktioniert es nicht. Kommt zwar keine Fehlermeldung o. ä., aber die Sortierreihenfolge stimmt auch nicht.

---

<div class="post-metadata">

### Author: ![Xandrian](https://www.pg-forum.de/user_avatar/www.pg-forum.de/xandrian/32/249_2.png) [@Xandrian](https://www.pg-forum.de/u/Xandrian)
#### Post date: [26. April 2008 um 07:40 UTC](https://www.pg-forum.de/t/order-by-in-nata-rlicher-reihenfolge-sortieren/3171/17 "2008-04-26T07:40:34Z")

</div>

Naja was erwartet ihr auch? 😉 MySQL ist zwar in einigen Sachen komisch aber an gewisse Regeln hält es sich auch. So aber nu ist jut…

cu tb

---

<div class="post-metadata">

### Author: ![system](https://www.pg-forum.de/uploads/default/original/1X/dc97a981dd26692d5fb52e8b8fc7c090d7b9559a.png) [@system](https://www.pg-forum.de/u/system)
#### Post date: [21. Februar 2021 um 07:07 UTC](https://www.pg-forum.de/t/order-by-in-nata-rlicher-reihenfolge-sortieren/3171/18 "2021-02-21T07:07:35Z")

</div>


