Изменить параметры сортировки, как:
b=# select upper('утф' COLLATE "C"), upper('утф' COLLATE "en_US");
upper | upper
-------+-------
утф | УТФ
(1 row)
Изменение по умолчанию, как:
b=# create table clt (a text COLLATE "C");
CREATE TABLE
b=# insert into clt select 'утф';
INSERT 0 1
b=# select upper(a) from clt;
upper
-------
утф
(1 row)
b=# alter table clt alter column a set data type text COLLATE "en_US";
ALTER TABLE
b=# select upper(a) from clt;
upper
-------
УТФ
(1 row)
В качестве альтернативы вы можете сбросить данные и восстановить его в БД с правой локали. На столах восстановления будут построены с правильной сортировкой:
b=# CREATE DATABASE not_c ENCODING 'UTF8'
lc_ctype='en_US.utf-8'
lc_collate='en_US.UTF-8' TEMPLATE=template0;
CREATE DATABASE
b=# \c not_c
You are now connected to database "not_c" as user "postgres".
not_c=# create table clt (a text);
CREATE TABLE
not_c=# insert into clt select 'утф';
INSERT 0 1
not_c=# select upper(a) from clt;
upper
-------
УТФ
(1 row)
что-то, что вы не скажете: 'a = # select upper ('утф'); наверх ------- УТФ (1 ряд) ' –
postgres = # select version(); PostgreSQL 9.4.10 на x86_64-неизвестно-Linux-гну, составленный GCC (GCC) 4.8.5 20150623 ( Red Hat 4.8.5-4), 64-битный (1 строка) Postgres = # выберите верхнюю ('утф'); верхняя ------- утф (1 строка) –
hm:/'show server_encoding;'? .. и 'show lc_collate;'? .. –