2013-02-28 6 views
5

Ich habe eine große Tabelle in der Datenbank mit Tags. Nicht alle Wörter haben lateinische Zeichen (Englisch, Französisch ...), einige Wörter haben nicht-lateinische Zeichen (Hebräisch, Persisch, Arabisch ...)MySQL Sortieren nach Sprache der Zeichenfolge

Wie kann ich die Wörter ORDER BY [Language of word] auswählen?

+0

select * from Tabellenreihenfolge von CONVERT ('word_column' weiter verwenden UTF-8) asc – Shridhar

+0

Speichern Sie die tatsächliche Sprache des Wortes in einem Feld in derselben Tabelle? Der Versuch, einen solchen Interpreten zu schreiben, wird fast unmöglich sein. Zum Beispiel, wie planen Sie, Dinge wie das Wort "anders" zu behandeln - es wird auf Französisch und Englisch gleich geschrieben. Wenn Sie das nur durch das Betrachten der Zeichen innerhalb der Saiten tun wollen, werden Sie in sehr tiefem Wasser sein, und es wird fast unmöglich sein. – BenM

+0

@benM, das Wort, das Sie erwähnen, ist ein schlechtes Beispiel, da Sie auf Französisch ein "é" auf dem ersten "e" verwenden würden. Aber die Theorie Ihrer Intervention bleibt gültig – Sebas

Antwort

4

Sie könnten eine zweite Tabellensprache definieren und dann jedem Eintrag eine Sprachmarkierung anhängen. Sie können der Tabelle "Sprachen" eine Spalte für die Sortierreihenfolge hinzufügen. Wenn Sie dann auswählen, verbinden Sie sich mit der Tabelle "Sprachen" und ordnen Sie sie nach dem Tag-Feld und anschließend nach der Sortierreihenfolge der Sprache an.

+0

Das bedeutet: 1- Ich muss n Eingänge hinzufügen in der 'addtags.php' Seite weil dort ist keine Möglichkeit zu erkennen, ob die Sprache der Sprache ist Hebräisch, Persisch ... 2- Ich habe bereits die Tabelle mit vielen Wörtern erstellt –

+0

Vielleicht können Sie eine separate Frage zu stellen, wie ein Sprache Identifikator aus einer Reihe von UTF-Zeichen zu extrahieren .. – Zak

+0

Bitte beachten Sie meinen früheren Kommentar zu Ihrer Frage - Wie planen Sie, mit Wörtern umzugehen, die in germanischen Sprachen gleich geschrieben sind? Zum Beispiel: 'different' ... – BenM

1

können Sie Mysql verwenden Funktion namens FIELD()

ORDER BY FIELD(Language,'English','Japan','Swedish') 

oder wenn Sie weniger Sprache zu bestellen:

ORDER BY `ID`, 
    CASE `Language` 
    WHEN 'English' THEN 1 
    WHEN 'Japenese' THEN 2 
    WHEN 'Swedish' THEN 3 
    END 
+1

Angenommen, er hat die Sprache in einer anderen Spalte gespeichert. – BenM