PostgreSQL CONVERT ошибка - PullRequest
       3

PostgreSQL CONVERT ошибка

0 голосов
/ 02 февраля 2012

Я пытаюсь отсортировать по преобразованному столбцу, но psql возвращает ошибку:

SELECT * ИЗ таблицы ORDER BY CONVERT (col1 USING utf8_to_iso_8859_2);

ОШИБКА: ошибка синтаксисана или около строки «USING» 1: SELECT * FROM таблицы ORDER BY CONVERT (col1 USING utf8 ... ^

*** Ошибка ***

ОШИБКА: синтаксическая ошибка при или около состояния «ИСПОЛЬЗОВАНИЕ» SQL: 42601

Я видел эту функциюЯ пользовался этим раньше и в документации тоже, так что я не понимаю, почему я получаю эту ошибку. Что-то я пропустил?

Ответы [ 2 ]

2 голосов
/ 02 февраля 2012

Вы, вероятно, хотите использовать:

CONVERT(col1, 'iso-8859-2')

для преобразования col1 (текст) в iso-8859-2 (bytea), при условии, что ваша база данных хранится как utf-8. convert, convert_to и convert_from показаны в таблице 9-6 здесь: http://www.postgresql.org/docs/9.1/static/functions-string.html

1 голос
/ 02 февраля 2012

Похоже, вы смешиваете две функции . Одним из них является поддержка сортировки , что имело бы смысл в предложении ORDER BY:

SELECT * FROM table ORDER BY col1 COLLATE "fr_FR";

Другая функция convert() , которая транскодирует строку из исходной кодировки в определенную кодировку назначения:

SELECT convert('my_string', 'UTF8', 'ISO_8859_2')

Но это не влияет на порядок сортировки - за исключением локали C или столбца bytea.

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