2012-11-01 5 views
5

Ich habe arabische Wörter in meiner Datenbank:mysql 'order by' Problem mit arabischen Buchstaben

Beispiel:

أحمد يحيى 
احمد اسعد 

Die Frage ist:

Ich möchte die Namen sortiert nach Namen bekommen .

Das erwartete Ergebnis ist:

احمد اسعد 
أحمد يحيى 

Aber ich habe:

أحمد يحيى 
احمد اسعد 

أ vor ا

ich versucht, dieses

select name from emp order by name; 

bitte helfen.

+0

wählen Sie den Namen aus der Emp-Reihenfolge nach Name; –

+1

Können Sie uns sagen, welcher Zeichensatz und welche Kollatierung bei der Definition Ihrer Tabelle verwendet wurden? –

Antwort

1

Können Sie bitte Ihre Datenbankvergleiche überprüfen, sollten sie entweder auf utf8_general_ci oder utf8_unicode_ci eingestellt sein. Dies sollte Ihnen erlauben, die Reihenfolge nach usw. korrekt auszuführen.

Wenn läuft ein Stand-alone-Abfrage dies versuchen:

SET NAMES 'utf8'; 
SET CHARACTER SET utf8; 
select name from emp order by name; 
1

Versuchen Sie, eine persische Sortierung für Ihre Tabellendefinition zu verwenden.

Beispiel
create table emp 
(
    id int, 
    name text, 
    ... 
) 
collate utf32_persian_ci; 
+0

Wählen Sie den Namen aus der Emp-Reihenfolge aus Ersetzen (Name, 'Ç', 'أ' '); –

0

Ich hatte das gleiche Problem, und ich lösen es durch den Typ utf16_bin oder jede _bin ändern.

CREATE TABLE IF NOT EXISTS `test` (
    `id` int(11) NOT NULL, 
    `name` varchar(100) COLLATE utf16_bin NOT NULL 
) ENGINE=InnoDB DEFAULT CHARSET=utf16 COLLATE=utf16_bin; 
+0

Weitere Details wie ein Codebeispiel wären willkommen. – Fabien