[MySQL] Sortieren nach Alphabet, nicht ASCII...
Buttercup
- datenbank
Hi,
gibt es eine Möglichkeit MySQL zu sagen/erklären dass man die Sortierung auf Grundlage der Reihenfolge der Buchstaben im des Alphabet haben möchte, und nicht nach deren position in der ASCII Tabelle?
Groß- & Kleinbuchstaben kann man ja noch relativ einfach "durchmogeln" in demm man vorher alles klein- bzw. groß schreibt, aber was mach ich wegen der Umlaute?
@@Buttercup:
nuqneH
aber was mach ich wegen der Umlaute?
Dich in der Dokumentation unter I18n/L10n über Collations schlau.
Qapla'
gibt es eine Möglichkeit MySQL zu sagen/erklären dass man die Sortierung auf Grundlage der Reihenfolge der Buchstaben im des Alphabet haben möchte, und nicht nach deren position in der ASCII Tabelle?
Steht in der Anleitung: http://dev.mysql.com/doc/refman/5.1/de/charset.html. Du musst nur
Groß- & Kleinbuchstaben kann man ja noch relativ einfach "durchmogeln" in demm man vorher alles klein- bzw. groß schreibt, aber was mach ich wegen der Umlaute?
select * from a order by suchbegriff;
+-------------+
| suchbegriff |
+-------------+
| a |
| ä |
| A |
| b |
+-------------+
4 rows in set (0.00 sec)
show full columns from a\G
*************************** 1. row ***************************
Field: suchbegriff
Type: varchar(32)
Collation: utf8_general_ci
Null: YES
Key:
Default: NULL
Extra:
Privileges: select,insert,update
Comment:
Steht unter Collation etwas à la latin1_bin oder ascii_general_ci, kann es mit der deutschen Sortierung natürlich nicht weit her sein, anders als bei latin1_german1_ci oder utf8_general_ci.
Stimmt, Collations hatte ich ganz vergessen.
Allerdings hab ich jetzt dass problem das 'hätte' = 'hatte', was sehr störend ist, da das Feld eindeutig sein muss. D.h. nämlich in weiterer Folge dann, dass ich nicht 2 Einträge 'hatte' und 'hätte' gleichzeitig in der Tabelle haben kann.
Hi!
Allerdings hab ich jetzt dass problem das 'hätte' = 'hatte', was sehr störend ist, da das Feld eindeutig sein muss. D.h. nämlich in weiterer Folge dann, dass ich nicht 2 Einträge 'hatte' und 'hätte' gleichzeitig in der Tabelle haben kann.
Welche Zeichenkodierung verwendest du? Von der hängt ab, welche Kollationen zur Verfügung stehen. Bitte informiere dich im MySQL-Handbuch-Kapitel Internationalization and Localization, welche Sortierregeln den einzelnen Kollationen zugeordnet sind. Wenn du jeden Buchstaben einzeln unterscheiden willst, bleibt dir nur eine _bin-Kollation. Damit wird allerdings nach dem Code und nicht nach sprachspezifischen Regeln sortiert. Allerdings kann man immer noch eine explizit zu verwendende Kollation im Statement angeben, die dann die vom Feld außer Kraft setzt.
Lo!