Buttercup: [MySQL] Sortieren nach Alphabet, nicht ASCII...

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?

  1. @@Buttercup:

    nuqneH

    aber was mach ich wegen der Umlaute?

    Dich in der Dokumentation unter I18n/L10n über Collations schlau.

    Qapla'

    --
    Volumen einer Pizza mit Radius z und Dicke a: pi z z a
  2. 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.

    1. 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.

      1. 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!