Postgresql UTF8 русский поиск

Модератор: Модераторы разделов

Artem M.
Сообщения: 174
ОС: Debain GNU/Linux 4

Postgresql UTF8 русский поиск

Сообщение Artem M. »

Не нужно сразу закидывать меня сообщениями вроде "Гуглить религия не позволяет" и т.п., поскольку искал долго, находил много, но ответа не нашёл.

Вопрос, в принципе, отражает тема:

Итак, есть база с текстовыми полями заполненная русскими и англицкими словами:

Код: Выделить всё

SELECT * FROM bla;

id |   text
----+-----------
  1 | dfsfs
  2 | хрень
  3 | хаба-хаба
(записей: 3)


теперь так:


Код: Выделить всё

artem=#  SELECT * FROM bla WHERE text ILIKE '%df%';
 id | text
----+-------
  1 | dfsfs
(1 запись)


нормально. Теперь так(обратите внимание на регистр в точке '%df%'):


Код: Выделить всё

artem=#  SELECT * FROM bla WHERE text ILIKE '%Df%';
 id | text
----+-------
  1 | dfsfs
(1 запись)



Тоже всё как полагается - поиск независимо от регистра. А вот теперь наш Велики и могучий:


Код: Выделить всё

artem=#  SELECT * FROM bla WHERE text ILIKE '%ба%';
 id |   text
----+-----------
  3 | хаба-хаба
(1 запись)


работает, а так:


Код: Выделить всё

artem=#  SELECT * FROM bla WHERE text ILIKE '%бА%';
 id | text
----+------
(записей: 0)


не работает!

\l выдаёт, что базы в кодировке UTF8, вроде как всё в норме.

postgres=# \l
Список баз данных
Имя | Владелец | Кодировка
--------------+----------+-----------
artem | postgres | UTF8
(записей: 1)





ОС - Debain 4 rc3
Версия postgres - 8.1.8-1

P.S. После долгих поисков в интернете, я нашёл пару таких вопросов. Но ответов на них нет.
Для Вас, Юлий Соломонович, бесплатно. Так сказать - 300 руб.
Спасибо сказали:
Artem M.
Сообщения: 174
ОС: Debain GNU/Linux 4

Re: Postgresql UTF8 русский поиск

Сообщение Artem M. »

А что, Postgresql никто не пользуется??? Мне не хочется переходить на MySQL из-за такой небольшой проблемы. Кстати, кто знает, у MySQL - тоже есть такая проблема?
Для Вас, Юлий Соломонович, бесплатно. Так сказать - 300 руб.
Спасибо сказали:
alfss
Сообщения: 262

Re: Postgresql UTF8 русский поиск

Сообщение alfss »

(PostgreSQL) 8.2.6

Код: Выделить всё

    a
-----------
 test
 тесть
 белеберда
 one
 two
(5 rows)


Код: Выделить всё

 select * from test_text where a ILIKE '%o%';
  a
-----
 one
 two
(2 rows)

test=# select * from test_text where a ILIKE '%O%';
  a
-----
 one
 two
(2 rows)


Код: Выделить всё

test=# select * from test_text where a ILIKE '%БЕ%';
     a
-----------
 белеберда
(1 запись)

test=# select * from test_text where a ILIKE '%бе%';
     a
-----------
 белеберда
(1 запись)
Спасибо сказали:
Artem M.
Сообщения: 174
ОС: Debain GNU/Linux 4

Re: Postgresql UTF8 русский поиск

Сообщение Artem M. »

alfss писал(а):
17.09.2008 04:19
(PostgreSQL) 8.2.6

Код: Выделить всё

    a
-----------
 test
 тесть
 белеберда
 one
 two
(5 rows)


Код: Выделить всё

 select * from test_text where a ILIKE '%o%';
  a
-----
 one
 two
(2 rows)

test=# select * from test_text where a ILIKE '%O%';
  a
-----
 one
 two
(2 rows)


Код: Выделить всё

test=# select * from test_text where a ILIKE '%БЕ%';
     a
-----------
 белеберда
(1 запись)

test=# select * from test_text where a ILIKE '%бе%';
     a
-----------
 белеберда
(1 запись)


Вах! Поставил 8.3.3 из самоустанавливающегося бинарника - всё работает. Я до этого ещё 7.4 пробовал - тоже не работает как надо.
Большое спасибо! Вопрос закрыт.
Для Вас, Юлий Соломонович, бесплатно. Так сказать - 300 руб.
Спасибо сказали: