ORDER by
Achot
- mysql
- php
Hallo,
irgendwas stimmt da nicht, ich habe folgende Bezeichnungen in der Datenbank:
Jetzt möchte ich nach ASC sortieren und erhalte folgende Ausgabe
Was stimmt da denn nicht? Auch wenn ich mit phpMyAdmin die Spalte sortieren lasse, erhalte ich diese Sortierung. Kann also nicht am Script liegen. Wie kommt diese Sortierung zustande?
Das Feld titel, welches sortiert werden soll hat den Feldtype varchar(200)
Hallo,
sieht für mich ok aus, was hättest du erwartet?
Gruß
Kalk
Hallo,
sieht für mich ok aus, was hättest du erwartet?
EDIT: Sorry, ich bin schon total neben der Kappe :/ Ich meinte, dass die Zahl nach unten kommt.
Tach!
irgendwas stimmt da nicht,
Und was stimmt da nicht?
Jetzt möchte ich nach ASC sortieren und erhalte folgende Ausgabe
- 45min
- Bingo
- DAS!
- Der Tag
- Echt was
Was stimmt da denn nicht?
Ich weiß ja nicht, was das Ergebnis sein soll. Sieht normal aus.
Wie kommt diese Sortierung zustande?
Für Sortierung und Vergleichen ist die Collation-Angabe zuständig. Die bestimmt, wann Buchstaben gleich oder größer oder kleiner sind.
dedlfix.
Hallo,
- 45min
- Bingo
- DAS!
- Der Tag
- Echt was
Was stimmt da denn nicht?
kann ich nicht nach dem Alphabet A,B,C usw. sortieren lassen? Das Bingo müsste nach dem A kommen.
Tach!
- 45min
- Bingo
- DAS!
- Der Tag
- Echt was
Was stimmt da denn nicht?
kann ich nicht nach dem Alphabet A,B,C usw. sortieren lassen?
Doch, du kannst nach den diversen Collation-Regeln sortieren lassen.
Das Bingo müsste nach dem A kommen.
Welches A?
dedlfix.
Hallo,
Welches A?
Sorry, ich meinte die Zahl sollte ganz nach unten.
Tach!
Sorry, ich meinte die Zahl sollte ganz nach unten.
Dafür kenne ich keine Collation. Abseits von Buchstaben wird üblicherweise nach ASCII sortiert, und da kommen Ziffern vor Buchstaben.
Wenn du Zahlen hinten stehen haben möchtest, wirst du wohl selbst Hand an die Sortierung anlegen. Zum Beispiel herausfinden, ob der Wert mit Ziffern anfängt und dann eine 0 ansonsten eine 1 liefern und den eigentlichen Textfeld-Inhalt an zweiter Stelle sortieren.
dedlfix.
Hallo Dedlfix,
gibt es bei MySQL eigentlich eine Möglichkeit, eigene Kollationen anzulegen?
Ich kenne das von anderen DNMS. Da ist das möglich.
Liebe Grüße
TS
Unkonventioneller Ansatz: gibt es eine EBCDIC Collation? Da kommen die Zahlen hinter den Buchstaben.
Allerdings steckst du dann bis zum Hals in der IBM Großrechnerwelt...
Tach!
Unkonventioneller Ansatz: gibt es eine EBCDIC Collation? Da kommen die Zahlen hinter den Buchstaben.
Die Regeln der Kollationen richten sich vorwiegend nach natürlichen Sprachen/Schriftsystemen.
dedlfix.
nicht schön aber selten
select
entry,
(entry REGEXP '^[0-9]*$') as isint
from alphanum
order by isint, entry
Haste Recht, ist nur ein Ansatz. Muss man halt noch anpassen, wirkt z.B. auch nicht bei "1a2b3c4d". Lösung per Collation wurde ja schon genannt. Ich persönliche würde das am Client mit einer eigenen Funktion lösen.