Sortierung von Nummern

Hallo Community,
gibt es eine Möglichkeit „menschlic“ zu sortieren?

Also:
1
2
3
4
5
6
7
8
9
10
11
12
13

statt
1
10
11
12
13

2
21
22
23

3

Das Problem: Ich habe Nummern mit führender Jahreszahl.
20121
20122
20123
20124

20131
20132
20133
20134

Hallo Oliver.

Warum speicherst du deine Daten nicht gleich als Integer?
Dann würde das sortieren auch nach „menschlich“ aussehen.

Du kannst aber auch innerhalb einer Abfrage „Casten“:

SELECT \* FROM MyTable
ORDER BY CAST(amount AS Unsigned) DESC

Zumindest vorrausgesetzt du benutzt MySQL…
Die Beschreibung zu Cast findest du hier:
http://dev.mysql.com/doc/refman/5.1/en/cast-function…

mit freundlichen Grüßen
Julian

Hallo Community,
gibt es eine Möglichkeit „menschlic“ zu sortieren?

Also:
1
2
3
4
5

Ja

01
02

09
10
11

201301
201302

201310

PS: Die Computer sortiert übrigens alphabetisch.

Hi Julian,
danke für die superschnelle Antwort.
Gleiches Problem. Die Spalten sind Integer.
Aber spiels mal durch:
20131
20132
20133
20134 (bis 20139 fünfstellig,

201310 ab 201310 sechstellig)
Und dann haut der mir doch die 2012er Reihe dazwischen. Schau mal hier:
http://screencast.com/t/yJLuAzP0hq
201210 ist kleiner wie 201310 kommt also nach 20139.
Oder bin ich auf dem Holzwurm?
Gruß
Oliver

Speichere deine Eingaben als Integer, dann brauchst du keine casts zu machen und kannst mit DESC oder ASC einfach absteigend oder aufsteigend sortieren (und zwar in aller Regel ohne die von dir erwähnten Nebeneffekte).

Welchen Dateityp hast du denn verwendet und gibt’s dafür einen bestimmten Grund?

Ja soweit war ich auch schon. Nur ich weiß nie wie viel eEinträge es werden.
Und 2013000000000001 sieht auch nicht schön aus.

Es ist integer!

verwende natsort:
http://de.php.net/natsort

hier noch etwas blablabla, weil das doofe Eingabefeld mindestens 80 zeichen haben will meine Antwort aber kürzer ist …

Hi,
danke für die Superschnelle Antwort. natsort sortiert Arrays in php.
Ich bräuchte es für mysql. OK, dann muss ich irgendwie mit nem array trixen…
…while( $ausgabe=mysql_metch_assoc($mssort))
{
echo $nummern_array[$x];
}
Irgendwie so…

das sind keine integer ode zahlen
zahlen stehen rechts bündig immer

was du da hast sind textfelder , das passiert bei exel leider sehr offt,
das einmal textfeld es immer wieder zu textfeld motiert, genauso wie bei datumsangaben .

Also mach erstmal ein Integer draus.
Und dann wird halt auch alphabetisch sortiert
und da
kommt nun mal
AAAA
AAAAB
AAAAC
BBBB
BBBBB
BBBBC

Servus,
in der Annahme dass deine Daten integer sind:

SELECT jahrmonat
FROM mytable
ORDER BY int( substr(jahrmonat, 1, 4) ),
int( substr(jahrmonat, 5) )

ist nicht hübsch, macht aber anscheinend was du haben willst.

Gruss,
SomeOne

PS: JahrMonat-Werte besser wie 201201, 201202 … 201210, 201211, 201212 speichern, dann hast du das ganze Problem nicht