Lists: | pgsql-ru-general |
---|
From: | "Viktor Vislobokov" <vvislobokov(at)parma-telecom(dot)ru> |
---|---|
To: | pgsql-ru-general <pgsql-ru-general(at)postgresql(dot)org> |
Subject: | ILIKE с русскими не работает? |
Date: | 2005-04-25 03:38:14 |
Message-ID: | 426C6626.1050903@lukoilperm.ru |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-ru-general |
Собственно subj?
Проверяю:
template1=# CREATE DATABASE tmp WITH ENCODING='utf8';
CREATE DATABASE
template1=# CREATE TABLE tmp_tbl (id int not null primary key, name
varchar(20));
NOTICE: CREATE TABLE / PRIMARY KEY создаст подразумеваемый индекс
"tmp_tbl_pkey" для таблицы "tmp_tbl"
CREATE TABLE
template1=# INSERT INTO tmp_tbl VALUES(1, 'Вагон');
INSERT 17182 1
template1=# SELECT * FROM tmp_tbl WHERE name ILIKE ('Ва%');
id | name
----+------------
1 | Вагон
(1 запись)
template1=# select * from tmp_tbl where name ILIKE ('ва%');
id | name
----+------
(записей: 0)
template1=#
Есть проблема или я что-то не так делаю?
--
С уважением, Виктор
From: | Sergey Suleymanov <solt(at)eatpbank(dot)ru> |
---|---|
To: | vvislobokov(at)lukoilperm(dot)ru |
Cc: | pgsql-ru-general <pgsql-ru-general(at)postgresql(dot)org> |
Subject: | Re: ILIKE с русскими не раб |
Date: | 2005-04-25 04:37:39 |
Message-ID: | 87hdhvxyi4.fsf@boo.eatpbank.ru |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-ru-general |
>>>>> Viktor Vislobokov writes:
Viktor> Собственно subj? Проверяю: template1=# CREATE DATABASE tmp
А собственно переключиться в новую базу?
Viktor> WITH ENCODING='utf8'; CREATE DATABASE template1=# CREATE
Viktor> TABLE tmp_tbl (id int not null primary key, name
Viktor> varchar(20)); NOTICE: CREATE TABLE / PRIMARY KEY создаст
Viktor> подразумеваемый индекс "tmp_tbl_pkey" для таблицы "tmp_tbl"
Viktor> CREATE TABLE template1=# INSERT INTO tmp_tbl VALUES(1,
Viktor> 'Вагон'); INSERT 17182 1 template1=# SELECT * FROM tmp_tbl
Viktor> WHERE name ILIKE ('Ва%'); id | name ----+------------ 1 |
Viktor> Вагон (1 запись)
Viktor> template1=# select * from tmp_tbl where name ILIKE ('ва%');
Viktor> id | name ----+------ (записей: 0)
Viktor> template1=#
Viktor> Есть проблема или я что-то не так делаю?
Viktor> -- С уважением, Виктор
--
Sergey Suleymanov
From: | "Viktor Vislobokov" <vvislobokov(at)parma-telecom(dot)ru> |
---|---|
To: | pgsql-ru-general <pgsql-ru-general(at)postgresql(dot)org> |
Subject: | Re: ILIKE с русски |
Date: | 2005-04-25 04:56:21 |
Message-ID: | 426C7875.6080701@lukoilperm.ru |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-ru-general |
> А собственно переключиться в новую базу?
>
>
Да, забыл здесь привести. Переключался, конечно.
Пробовал даже создавать базу в KOI8-R, а не только в utf-8.
--
С уважением, Виктор
From: | Sergey Suleymanov <solt(at)eatpbank(dot)ru> |
---|---|
To: | vvislobokov(at)lukoilperm(dot)ru |
Cc: | pgsql-ru-general <pgsql-ru-general(at)postgresql(dot)org> |
Subject: | Re: ILIKE с русски |
Date: | 2005-04-25 05:13:42 |
Message-ID: | 8764ybwi9l.fsf@boo.eatpbank.ru |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-ru-general |
>>>>> Viktor Vislobokov writes:
Viktor> Да, забыл здесь привести. Переключался, конечно. Пробовал
Viktor> даже создавать базу в KOI8-R, а не только в utf-8.
Есть подозрение, что тут играет роль значение LC_COLLATE
самого процесса. Что говорит pg_controldata?
У меня база создана в KOI8, и
postgres(at)dragon:~$ pg_controldata
...
LC_COLLATE: ru_RU.KOI8-R
LC_CTYPE: ru_RU.KOI8-R
всякие ilike, ~*, order by работают замечательно. С индексами
правда облом.
А вот попробовал создать в UNICODE, таки да - не
работают. Правда проверить с LC_COLLATE=ru_RU.utf-8 не могу,
боюсь пользователи меня не поймут. :)
--
Sergey Suleymanov
From: | "Viktor Vislobokov" <vvislobokov(at)parma-telecom(dot)ru> |
---|---|
To: | Sergey Suleymanov <solt(at)eatpbank(dot)ru> |
Cc: | pgsql-ru-general <pgsql-ru-general(at)postgresql(dot)org> |
Subject: | Re: ILIKE с русски |
Date: | 2005-04-25 05:25:30 |
Message-ID: | 426C7F4A.7040502@lukoilperm.ru |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-ru-general |
Ясно. Т.е. у тебя системная локаль koi8-r
У меня - utf-8
Т.е. надо чтобы системная локаль была koi8-r, чтобы нормально работал ilike?
Интересно, а как это работает в винде?
Народы, у кого postgreSQL на винде? Что скажите?
> Viktor> даже создавать базу в KOI8-R, а не только в utf-8.
>
> Есть подозрение, что тут играет роль значение LC_COLLATE
> самого процесса. Что говорит pg_controldata?
>
> У меня база создана в KOI8, и
>
>postgres(at)dragon:~$ pg_controldata
>...
>LC_COLLATE: ru_RU.KOI8-R
>LC_CTYPE: ru_RU.KOI8-R
>
> всякие ilike, ~*, order by работают замечательно. С индексами
> правда облом.
>
> А вот попробовал создать в UNICODE, таки да - не
> работают. Правда проверить с LC_COLLATE=ru_RU.utf-8 не могу,
> боюсь пользователи меня не поймут. :)
>
>
>
--
С уважением, Виктор
From: | Oleg Bartunov <oleg(at)sai(dot)msu(dot)su> |
---|---|
To: | vvislobokov(at)lukoilperm(dot)ru |
Cc: | pgsql-ru-general <pgsql-ru-general(at)postgresql(dot)org> |
Subject: | Re: [pgsql-ru-general] ILIKE с русскими не работает? |
Date: | 2005-04-25 06:59:05 |
Message-ID: | Pine.GSO.4.62.0504251058350.4489@ra.sai.msu.su |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-ru-general |
This message is in MIME format. The first part should be readable text,
while the remaining parts are likely unreadable without MIME-aware tools.
---559023410-869693583-1114412345=:4489
Content-Type: TEXT/PLAIN; charset=koi8-r; format=flowed
Content-Transfer-Encoding: 8BIT
Это у тебя с локаое проблема, проверь. В koi8-r все работает как положено.
On Mon, 25 Apr 2005, Viktor Vislobokov wrote:
> Собственно subj?
>
> Проверяю:
> template1=# CREATE DATABASE tmp WITH ENCODING='utf8';
> CREATE DATABASE
> template1=# CREATE TABLE tmp_tbl (id int not null primary key, name
> varchar(20));
> NOTICE: CREATE TABLE / PRIMARY KEY создаст подразумеваемый индекс
> "tmp_tbl_pkey" для таблицы "tmp_tbl"
> CREATE TABLE
> template1=# INSERT INTO tmp_tbl VALUES(1, 'Вагон');
> INSERT 17182 1
> template1=# SELECT * FROM tmp_tbl WHERE name ILIKE ('Ва%');
> id | name
> ----+------------
> 1 | Вагон
> (1 запись)
>
> template1=# select * from tmp_tbl where name ILIKE ('ва%');
> id | name
> ----+------
> (записей: 0)
>
> template1=#
>
> Есть проблема или я что-то не так делаю?
>
>
Regards,
Oleg
_____________________________________________________________
Oleg Bartunov, sci.researcher, hostmaster of AstroNet,
Sternberg Astronomical Institute, Moscow University (Russia)
Internet: oleg(at)sai(dot)msu(dot)su, http://www.sai.msu.su/~megera/
phone: +007(095)939-16-83, +007(095)939-23-83
---559023410-869693583-1114412345=:4489--
From: | "Viktor Vislobokov" <vvislobokov(at)parma-telecom(dot)ru> |
---|---|
To: | |
Cc: | pgsql-ru-general <pgsql-ru-general(at)postgresql(dot)org> |
Subject: | Re: [pgsql-ru-general] Re: [pgsql-ru-general] ILIKE с русскими не работает? |
Date: | 2005-04-25 07:06:04 |
Message-ID: | 426C96DC.6030707@lukoilperm.ru |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-ru-general |
Oleg Bartunov wrote:
> Это у тебя с локаое проблема, проверь. В koi8-r все работает как
> положено.
>
Это получается, что не у меня с локалью проблема, а у PostgreSQL.
Да, у меня системная локаль utf-8. Но почему бы нет? Тем более, что
количество
дистрибутивов Linux, которые используют ru_RU.koi8r вместо ru_RU.utf-8
уже стремится к нулю. В общем бага, однозначно. Будем знать.
--
С уважением, Виктор
From: | Oleg Bartunov <oleg(at)sai(dot)msu(dot)su> |
---|---|
To: | vvislobokov(at)lukoilperm(dot)ru |
Cc: | pgsql-ru-general <pgsql-ru-general(at)postgresql(dot)org> |
Subject: | Re: Re: [pgsql-ru-general] Re: [pgsql-ru- |
Date: | 2005-04-25 07:26:41 |
Message-ID: | Pine.GSO.4.62.0504251122190.4489@ra.sai.msu.su |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-ru-general |
This message is in MIME format. The first part should be readable text,
while the remaining parts are likely unreadable without MIME-aware tools.
---559023410-1817792895-1114414001=:4489
Content-Type: TEXT/PLAIN; charset=koi8-r; format=flowed
Content-Transfer-Encoding: 8BIT
On Mon, 25 Apr 2005, Viktor Vislobokov wrote:
> Oleg Bartunov wrote:
>
>> Это у тебя с локаое проблема, проверь. В koi8-r все работает как
>> положено.
>>
> Это получается, что не у меня с локалью проблема, а у PostgreSQL.
> Да, у меня системная локаль utf-8. Но почему бы нет? Тем более, что
> количество
> дистрибутивов Linux, которые используют ru_RU.koi8r вместо ru_RU.utf-8
> уже стремится к нулю. В общем бага, однозначно. Будем знать.
Ты бы подробнее проблему описал ! Значит, что я понял:
1. системная локаль у тебя ru_RU.utf-8 и она у тебя везде кроме потсгреса
работает нормально. Проверь в perl, например.
2. как ты делали initdb ?
3. как ты вводил запрос ? Я, например, не знаю, как мне в psql работать
в unicode :)
После этого, я смогу проверить у себя.
>
>
Regards,
Oleg
_____________________________________________________________
Oleg Bartunov, sci.researcher, hostmaster of AstroNet,
Sternberg Astronomical Institute, Moscow University (Russia)
Internet: oleg(at)sai(dot)msu(dot)su, http://www.sai.msu.su/~megera/
phone: +007(095)939-16-83, +007(095)939-23-83
---559023410-1817792895-1114414001=:4489--
From: | "Viktor Vislobokov" <vvislobokov(at)parma-telecom(dot)ru> |
---|---|
To: | |
Cc: | pgsql-ru-general <pgsql-ru-general(at)postgresql(dot)org> |
Subject: | Re: [pgsql-ru-general] Re: [pgsql-ru-general] Re: [pgsql-ru-general] ILIKE с русскими не работает? |
Date: | 2005-04-25 08:03:05 |
Message-ID: | 426CA439.4090105@lukoilperm.ru |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-ru-general |
> Ты бы подробнее проблему описал ! Значит, что я понял:
> 1. системная локаль у тебя ru_RU.utf-8 и она у тебя везде кроме потсгреса
> работает нормально. Проверь в perl, например.
Работает, например
#!/usr/bin/perl
use utf8;
$s = "Проба";
print uc($s) . "\n";
print lc($s) . "\n";
> 2. как ты делали initdb ?
initdb делается автоматом при первом запуске службы PostgreSQL.
Делается, насколько я понимаю в системной локали, но для PostgreSQL
как ASCII (судя по выводу \l в psql).
> 3. как ты вводил запрос ? Я, например, не знаю, как мне в psql работать
> в unicode :)
Вводил в psql. Да ничем не отличается работа в utf-8 локали для пользователя
от любой другой локали. Только вот такими заморочками как с ILIKE.
Базу ессно, создаём с WITH ENCODING 'UTF8';
--
С уважением, Виктор
From: | Sergey Suleymanov <solt(at)eatpbank(dot)ru> |
---|---|
To: | PostgreSQL on Russian <pgsql-ru-general(at)postgresql(dot)org> |
Subject: | Re: Re: [pgsql-ru-general] Re: |
Date: | 2005-04-25 08:03:16 |
Message-ID: | 87y8b7qo57.fsf@boo.eatpbank.ru |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-ru-general |
>>>>> Viktor Vislobokov writes:
Viktor> Это получается, что не у меня с локалью проблема, а у
Viktor> PostgreSQL. Да, у меня системная локаль utf-8. Но почему бы
Viktor> нет? Тем более, что количество дистрибутивов Linux, которые
Viktor> используют ru_RU.koi8r вместо ru_RU.utf-8 уже стремится к
Viktor> нулю. В общем бага, однозначно. Будем знать.
Кстати да. Вот что нашел:
> the caseinsensitive patternmatch-operators seems not to work with
> multibyte, while lower() and upper()-functions finally works perfect.
It looks to me like iwchareq() in src/backend/utils/adt/like.c still needs
work to handle multibyte characters in a sane fashion. Feel free to
submit a patch ...
regards, tom lane
Речь шла правда об 8.0b3. Но похоже, ибо order by, upper, lower
работают, а ilike и ~* - нет.
--
Sergey Suleymanov
From: | Oleg Bartunov <oleg(at)sai(dot)msu(dot)su> |
---|---|
To: | vvislobokov(at)lukoilperm(dot)ru |
Cc: | pgsql-ru-general <pgsql-ru-general(at)postgresql(dot)org> |
Subject: | Re: Re: [pgsql-ru-general] Re: [pgsql-ru- |
Date: | 2005-04-25 12:00:34 |
Message-ID: | Pine.GSO.4.62.0504251600110.4489@ra.sai.msu.su |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-ru-general |
This message is in MIME format. The first part should be readable text,
while the remaining parts are likely unreadable without MIME-aware tools.
---559023410-1691952160-1114430434=:4489
Content-Type: TEXT/PLAIN; charset=koi8-r; format=flowed
Content-Transfer-Encoding: 8BIT
On Mon, 25 Apr 2005, Viktor Vislobokov wrote:
>
>> Ты бы подробнее проблему описал ! Значит, что я понял:
>> 1. системная локаль у тебя ru_RU.utf-8 и она у тебя везде кроме потсгреса
>> работает нормально. Проверь в perl, например.
>
> Работает, например
> #!/usr/bin/perl
>
> use utf8;
>
> $s = "Проба";
>
> print uc($s) . "\n";
> print lc($s) . "\n";
>
>
>> 2. как ты делали initdb ?
>
> initdb делается автоматом при первом запуске службы PostgreSQL.
> Делается, насколько я понимаю в системной локали, но для PostgreSQL
> как ASCII (судя по выводу \l в psql).
сделай в ru_RU.UTF8
>
>> 3. как ты вводил запрос ? Я, например, не знаю, как мне в psql работать
>> в unicode :)
>
> Вводил в psql. Да ничем не отличается работа в utf-8 локали для пользователя
> от любой другой локали. Только вот такими заморочками как с ILIKE.
> Базу ессно, создаём с WITH ENCODING 'UTF8';
>
>
Regards,
Oleg
_____________________________________________________________
Oleg Bartunov, sci.researcher, hostmaster of AstroNet,
Sternberg Astronomical Institute, Moscow University (Russia)
Internet: oleg(at)sai(dot)msu(dot)su, http://www.sai.msu.su/~megera/
phone: +007(095)939-16-83, +007(095)939-23-83
---559023410-1691952160-1114430434=:4489--
From: | "Viktor Vislobokov" <vvislobokov(at)parma-telecom(dot)ru> |
---|---|
To: | |
Cc: | pgsql-ru-general <pgsql-ru-general(at)postgresql(dot)org> |
Subject: | Re: [pgsql-ru-general] Re: [pgsql-ru-general] Re: [pgsql-ru-general] Re: [pgsql-ru-general] ILIKE с русскими не работает? |
Date: | 2005-04-26 03:13:32 |
Message-ID: | 426DB1DC.5010308@lukoilperm.ru |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-ru-general |
>> initdb делается автоматом при первом запуске службы PostgreSQL.
>> Делается, насколько я понимаю в системной локали, но для PostgreSQL
>> как ASCII (судя по выводу \l в psql).
>
>
> сделай в ru_RU.UTF8
Хм. А в чём разница будет?
Я ведь саму базу создаю с явным указанием кодировки KOI8?
Т.е. я всегда считал, что если указать кодировку при initdb, то эта
кодировка влияет
только на базу template1. На остальные базы это влияет только, если при
создании
базы явно не указана кодировка. Я не прав?
--
С уважением, Виктор
From: | Sergey Suleymanov <solt(at)eatpbank(dot)ru> |
---|---|
To: | PostgreSQL on Russian <pgsql-ru-general(at)postgresql(dot)org> |
Subject: | Re: Re: [pgsql-ru-general] Re: |
Date: | 2005-04-26 04:44:15 |
Message-ID: | 871x8ytae8.fsf@boo.eatpbank.ru |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-ru-general |
>>>>> Viktor Vislobokov writes:
Viktor> Хм. А в чём разница будет? Я ведь саму базу создаю с явным
Viktor> указанием кодировки KOI8? Т.е. я всегда считал, что если
Viktor> указать кодировку при initdb, то эта кодировка влияет только
Viktor> на базу template1. На остальные базы это влияет только, если
Viktor> при создании базы явно не указана кодировка. Я не прав?
Полагаю нет. Кодировка базы влияет только на трансляцию
ввода/вывода. А сортировка и прочая от локали initdb. Оно и
смотрится по разному: SHOW LC_COLLATE/LC_* или SHOW
SERVER_ENCODING/CLIENT_ENCODING
--
Sergey Suleymanov
From: | "Viktor Vislobokov" <vvislobokov(at)parma-telecom(dot)ru> |
---|---|
To: | Oleg Bartunov <oleg(at)sai(dot)msu(dot)su> |
Cc: | pgsql-ru-general <pgsql-ru-general(at)postgresql(dot)org> |
Subject: | Re: [pgsql-ru-general] Re: [pgsql-ru-general] Re: [pgsql-ru-general] Re: [pgsql-ru-general] ILIKE с русскими не работает? |
Date: | 2005-04-29 05:02:53 |
Message-ID: | 4271BFFD.7060905@lukoilperm.ru |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-ru-general |
>>
>>> 2. как ты делали initdb ?
>>
>>
>> initdb делается автоматом при первом запуске службы PostgreSQL.
>> Делается, насколько я понимаю в системной локали, но для PostgreSQL
>> как ASCII (судя по выводу \l в psql).
>
>
> сделай в ru_RU.UTF8
>
Сделал. Ничего не изменилось. ILIKE в utf-8 не работает.
--
С уважением, Виктор
From: | Nick Gazaloff <nick(at)sbin(dot)org> |
---|---|
To: | |
Cc: | pgsql-ru-general <pgsql-ru-general(at)postgresql(dot)org> |
Subject: | Re: [pgsql-ru-general] Re: [pgsql-ru-general] Re: [pgsql-ru-general] Re: [pgsql-ru-general] Re: [pgsql-ru-general] ILIKE с русскими не работает? |
Date: | 2005-04-29 09:59:48 |
Message-ID: | 42720594.8050407@sbin.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-ru-general |
Viktor Vislobokov wrote:
>
>>>
>>>> 2. как ты делали initdb ?
>>>
>>>
>>>
>>> initdb делается автоматом при первом запуске службы PostgreSQL.
>>> Делается, насколько я понимаю в системной локали, но для PostgreSQL
>>> как ASCII (судя по выводу \l в psql).
>>
>>
>>
>> сделай в ru_RU.UTF8
>>
> Сделал. Ничего не изменилось. ILIKE в utf-8 не работает.
Покажи вывод
show LC_COLLATE;
show LC_CTYPE;
--
С уважением,
технический директор ООО "ЦСА"
Николай Газалов
www.sbin.org
+7 8793 365584
(GPG Key ID: 4396B2D0)
From: | "Viktor Vislobokov" <vvislobokov(at)parma-telecom(dot)ru> |
---|---|
To: | |
Cc: | pgsql-ru-general <pgsql-ru-general(at)postgresql(dot)org> |
Subject: | Re: [pgsql-ru-general] Re: [pgsql-ru-general] Re: [pgsql-ru-general] Re: [pgsql-ru-general] Re: [pgsql-ru-general] Re: [pgsql-ru-general] ILIKE с русскими не работает? |
Date: | 2005-04-29 10:10:45 |
Message-ID: | 42720825.4040304@lukoilperm.ru |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-ru-general |
>>>> initdb делается автоматом при первом запуске службы PostgreSQL.
>>>> Делается, насколько я понимаю в системной локали, но для PostgreSQL
>>>> как ASCII (судя по выводу \l в psql).
>>>
>>>
>>>
>>>
>>> сделай в ru_RU.UTF8
>>>
>> Сделал. Ничего не изменилось. ILIKE в utf-8 не работает.
>
>
> Покажи вывод
> show LC_COLLATE;
> show LC_CTYPE;
>
>
tmp=# SHOW LC_COLLATE;
lc_collate
-------------
ru_RU.utf-8
(1 запись)
tmp=# SHOW LC_CTYPE;
lc_ctype
-------------
ru_RU.utf-8
(1 запись)
tmp=#
--
С уважением, Виктор