2014-11-28 2 views
0

У меня есть таблица с колонкой category_name и данные 1,9,A,B,C,א,ב,גMySQL, Сортировать по колонку со строками на английском и другом языке (иврит)

данные как на английском (1,9, A, B, C) и древнееврейский (א , ב, ג).

Как заказать эти данные Иврит сначала, а затем английский?

SELECT * FROM table ORDER BY category_name ..... ?? 
+0

Проверьте [документацию] (http://dev.mysql.com/doc/refman/5.5/en/charset.html) о кодировках и сопоставлениях, поддерживаемых MySQL, но я боюсь, что вы не сможете сделать это без дополнительной информации (например, столбец, в котором говорится, что 'category_name' находится на английском или иврите). Использование правильной сортировки помогает MySQL сортировать строки, используя порядок естественных символов на целевом языке (например, на румынском языке, размещать «ă» и «â» рядом с «a», а не в конце алфавита, где они расположены если он проверяет коды Юникода). – axiac

+0

может быть 'select * из категории упорядоченно, когда category_name не regexp '[A-Za-z0-9]', а затем еще 0 else, end_name_ category_name' –

ответ

1

Вы можете попробовать обходной путь:

SELECT * 
FROM table 
ORDER BY IF(category_name <= '~', 2, 1) ASC, category_name 

Если у вас есть категории, чьи имена начинаются с '~' затем использовать другой символ, расположенный между ASCII и еврейскими буквами в списке Unicode.

Смежные вопросы