Spalte sortieren
Roger
- datenbank
hallo!
ich versuch gerade eine abfrage einer spalte zu sortieren.
blöd ist, dass die spalte als varchar deklariert ist und mein ergebnis zahlen. (in der spalte sind buchstaben und zahlen, in meiner anfrage bekomme ich aber nur zahlen).
will ich die jetzt sortieren, werden die nach ascii code sortiert:
eigentlich:
8, 12, 14, ...
tatsächlich:
12, 14, 8
kann ich die abfrage so gestalten, dass er die zahlen meinetwegen als integer behandelt?
... ORDER by wert ...
gruß.
roger.
Hi
eigentlich:
8, 12, 14, ...
tatsächlich:
12, 14, 8
das sieht eher nach einem asc bzw. desc - Problem aus
ciao
romy
eigentlich:
8, 12, 14, ...
tatsächlich:
12, 14, 8
das sieht eher nach einem asc bzw. desc - Problem aus
nein, tut es nicht.
die sortierung ist völlig korrekt, da sie nun mal auf einen alphanummerischen typ angewandt wird.
und der kann "zahlen" (die in diesem falle ja nur aneinandergereihte ziffern sind) nicht nach ihrer grösse sortieren, sondern sortiert sie so wie jeden anderen textstring auch:
vergleich erstes zeichen mit erstem zeichen, zweites zeichen mit zweitem zeichen, etc.
und da bei "12" und "8" nun mal das erste zeichen 1 vor der 8 kommt, wird halt so sortiert.
und da bei "12" und "8" nun mal das erste zeichen 1 vor der 8 kommt, wird halt so sortiert.
yo, so weit bin ich ja auch schon. :(
gibt es denn dafür keine lösung?
(übrigens: db-typ:mysql)
gruß.
roger.
und da bei "12" und "8" nun mal das erste zeichen 1 vor der 8 kommt, wird halt so sortiert.
yo, so weit bin ich ja auch schon. :(
gibt es denn dafür keine lösung?
(übrigens: db-typ:mysql)
was du bräuchtest, wäre wohl eine art type-cast innerhalb des select-statements:
SELECT characterspalte AS (INT) zahlwert FROM tabellexy ORDER BY zahlwert
hab gerade schon im mysql-manual gesucht, aber nichts passendes gefunden, dass meinen pseudocode
(INT) zahlwert
als mysql-funktion abbildet :-/
evtl. ginge es, wenn du die sortierung erst auf php-seite machst?
select-statement ausführen, schleife über ergebnis, darin alle werte in ein array einfügen, und anschliessend dieses array mit den array-funktion von php sortieren ...?
was du bräuchtest, wäre wohl eine art type-cast innerhalb des select-statements:
SELECT characterspalte AS (INT) zahlwert FROM tabellexy ORDER BY zahlwert
yo, ich dachte sowas gibt's...
funzt aber net, egal wie. hab auch schon gebastelt.
hab gerade schon im mysql-manual gesucht, aber nichts passendes gefunden, dass meinen pseudocode
(INT) zahlwert
so gings mir auch :(
es gibt zich funktionen, die in zich formate konvertieren (ascii(), oct(), ord()...) aber keine, die mir ne integer-zahl bastelt! verflucht!
vielleicht gibts ja irgend ein mysql-hik-hak-style (undokumentiert), der das hinkriegt :) ?
evtl. ginge es, wenn du die sortierung erst auf php-seite machst?
select-statement ausführen, schleife über ergebnis, darin alle werte in ein array einfügen, und anschliessend dieses array mit den array-funktion von php sortieren ...?
ja, das geht, aber das wollte ich vermeiden. ich dachte, es ginge "einfacher".
gruß.
roger.
Hi, hallo
ich versuch gerade eine abfrage einer spalte zu sortieren.
blöd ist, dass die spalte als varchar deklariert ist und mein ergebnis zahlen.
Immer Zahlen?
[ ] JA
-> erschieß den Typen, der das so definiert hat .. nimm ein großes Kaliber
-> stelle die längste String-Zahl fest und fülle alle anderen mit Nullen davor auf, so daß alle Einträge dieselbe Länge haben .. dann funzt die ASCII-Sortierung.
[ ] Nein
-> stelle die längste String-Zahl fest und fülle alle anderen (Zahlen) mit Nullen davor auf, so daß alle Einträge dieselbe Länge haben .. dann funzt die ASCII-Sortierung.
Tschau, tschüß,
Frank