PostgreSQL: неправильная сортировка по украинскому тексту - PullRequest
1 голос
/ 28 января 2012

У меня есть таблица со всеми странами на трех языках: английском, русском и украинском. На первых двух языках сортировка в порядке. Но по именам украинских стран сортировка не в порядке.

На первых двух местах стоит две буквы 'є' (8-я позиция в ABC) и 'і' (12-я позиция в ABC), а все следующие буквы отсортированы в порядке.

Как предотвратить это поведение? Кодировка БД: utf-8.

Ответы [ 2 ]

3 голосов
/ 28 января 2012

Если вы используете 9.1, вы можете добавить сортировку, которая будет использоваться для сортировки, в предложение ORDER BY:

SELECT *
FROM your_table
ORDER BY your_column COLLATE "ua_UA"

Имя сопоставления зависит от вашей операционной системы - не уверен, какое будет правильное название для Украины. Но я думаю, вы поняли.

Вы также можете прочитать эту запись в блоге:

http://www.depesz.com/index.php/2011/03/04/waiting-for-9-1-per-column-collation-support/

3 голосов
/ 28 января 2012

UTF-8 ничего не знает о "языке".Чтобы сортировка по алфавиту имела смысл для Postgres, вам нужно установить локаль .В вашем вопросе вообще не упоминается языковой стандарт, поэтому я предполагаю, что вы просто сортируете, используя любой языковой стандарт по умолчанию (возможно, английский или русский).

Если вы уже используете языковые стандарты, я предлагаю предоставить подробностинастройки вашего клиента / сервера, так как там может быть ошибка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...