powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / PostgreSQL 7.3 + кириллица
8 сообщений из 8, страница 1 из 1
PostgreSQL 7.3 + кириллица
    #32484284
binary
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть проблема. pgsql собран с --enable-multibyte --with-mb=windows-1251
База в локали WIN.

psql -l -U pgsql
List of databases
Name | Owner | Encoding
------------+-------+----------
filesearch | pgsql | WIN
template0 | pgsql | WIN
template1 | pgsql | WIN

Собственно, в базе filesearch есть записи в кириллице. При попытке выбрать, данные отображаются нормально, но при поиске все символы регистрозависимые. Подскажите, пожалуйста, как сделать регистронезависимый поиск в кириллице? Система - FreeBSD 4.9, PostgreSQL 7.3.5
...
Рейтинг: 0 / 0
PostgreSQL 7.3 + кириллица
    #32484489
binary
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всё, разобрался, уже не актуально, спасибо :)
...
Рейтинг: 0 / 0
PostgreSQL 7.3 + кириллица
    #32485195
Stas Tristan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажи, как разобрался
...
Рейтинг: 0 / 0
PostgreSQL 7.3 + кириллица
    #32485893
binary
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Просто корректно настроил локаль в системе и сделал pw usermod pgsql -L russian
После этого корректно заработала кириллица :)
...
Рейтинг: 0 / 0
PostgreSQL 7.3 + кириллица
    #32486548
Stas Tristan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А можно поподробнее? А тоя только начал осваивать Postgres и то - под Windows через Cygwin. Вот Список прирложений, что у меня лежат в директории Bin (я пользуюсь коммерческой сборкой Command Promt ибо открытую не смог корректно поставить):

basename.exe
bash.exe
bzip2.exe
cat.exe
chmod.exe
chown.exe
cp.exe
cygrunsrv.exe
exece.exe
grep.exe
ipc-daemon.exe
kill.exe
less.exe
ln.exe
ls.exe
mkdir.exe
mkgroup.exe
mkpasswd.exe
mount.exe
pg_dump.exe
pg_dumpall.exe
pg_dumplo.exe
pg_id.exe
pg_restore.exe
pgsqltray.exe
pgsqltray_kill.exe
postgres.exe
ps.exe
psql.exe
rm.exe
sed.exe
sh.exe
stty.exe
tar.exe
umount.exe
vacuumlo.exe

Можешь в этой ситуации что-то подсказать? Какие команды из консоли настраивают локаль?
...
Рейтинг: 0 / 0
PostgreSQL 7.3 + кириллица
    #32503333
VovanVS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Столкнулся я тоже с проблемой сортировки русских слов без учета регистра. Pgsql 7.3.4 под Rad Hat Linux 8.0, кодировка UNICODE. Поиск по форуму и последующие попытки настроить локаль к результату не привели. А решать проблему нужно было, и быстро. Пришлось сделать "по-студенчески" - в лоб. Для этого написал 2 user-defined functions:
lowChar(varchar) RETURNS varchar;
и
lowStr(varchar) RETURNS varchar;
Первая представляет собой ветвление вида CASE $1 WHEN 'А' THEN 'а', т.е. вручную перебирает все символы русского языка (впридачу несколько символов из украинского - тоже было нужно). А вторая - последовательно "прогоняет" каждый символ из аргумента через первую функцию. А потом уже делается сортировка: ORDER BY lowStr(label).
Данные сравнения производительности:
162 строки, Windows, PgSQL 7.3.4 на CygWin
используя встроенную функцию lower() - запрос выполняется 10 ms
используя предлагаемую функцию lowStr() - запрос выполняется 70 ms.
Решение, естественно, не так красиво, как если нормально настроить локаль, но если не получается, то можно и так.
Если интересно, могу выложить полный код функций.
...
Рейтинг: 0 / 0
PostgreSQL 7.3 + кириллица
    #32503490
OAN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OAN
Гость
-- "ВЕРХНИЙ" регистр киррилицы
CREATE OR REPLACE FUNCTION w_upper(text) RETURNS text IMMUTABLE AS '
DECLARE BEGIN
RETURN TRANSLATE($1, ''abcdefghijklmnopqrstuvwxyzёабвгдежзийклмнопрстуфхцчшщъыьэюяіїє'',
''ABCDEFGHIJKLMNOPQRSTUVWXYZЁАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯІЇЄ'');
END; ' LANGUAGE 'plpgsql';

-- "нижний" регистр киррилицы
CREATE OR REPLACE FUNCTION w_lower(text) RETURNS text IMMUTABLE AS '
DECLARE BEGIN
RETURN TRANSLATE($1, ''ABCDEFGHIJKLMNOPQRSTUVWXYZЁАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯІЇЄ'',
''abcdefghijklmnopqrstuvwxyzёабвгдежзийклмнопрстуфхцчшщъыьэюяіїє'');
END; ' LANGUAGE 'plpgsql';
...
Рейтинг: 0 / 0
PostgreSQL 7.3 + кириллица
    #32504237
VovanVS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Согласен, вышеприведенный способ решения задачи гораздо понятнее и проще в реализации.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / PostgreSQL 7.3 + кириллица
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]