Добрый день, народ!
У меня работает Postgres 8.1.4.
Настройки локали такие:
enterprise# SHOW LC_COLLATE;
lc_collate
-------------
ru_RU.UTF-8
(1 запись)
enterprise=# SHOW LC_CTYPE;
lc_ctype
-------------
ru_RU.UTF-8
(1 запись)
В одной из таблиц появились такие пользовательские записи, что запрос в программе:
SELECT * FROM vw_прайс WHERE UPPER(ИМЯ) LIKE '%тосол%'; ,
который раньше работал нормально, стал выдавать такую ошибку:
ERROR: неверная последовательность байт имя кодировки "UTF8": 0xe9f820
Решил устранить проблему, избавившись от функции UPPER():
SELECT * FROM vw_прайс WHERE ИМЯ ~* '.*тосол.*';
Стало работать быстрее, но не находит выражения, в которых слово "тосол" начинается с большой буквы. Попробовал по-другому:
enterprise=# SELECT 'Тосол (5л)' ~* '.*тосол.*';
?column?
----------
f
(1 запись)
enterprise=# SELECT 'Тосол (5л)' ~* '.*Тосол.*';
?column?
----------
t
(1 запись)
Т.е. получается, что в моем случае конструкция ~* с русскими буквами не работает. С английскими словами все работает нормально. Подскажите, пожалуйста, что тут можно сделать?