Не правильный результат запроса с регулярными выражениями.

Postnik

Новичок
Не правильный результат запроса с регулярными выражениями.

Всем доброго.

Столкнулся с такой проблемой.Есть таблица
id short_name
1 Треугольник
2 Тройник
3 Шуруп
4 Болт

на php динамически формируется запрос вида

select full_name,id,short_name,group_name from product where short_name ~* '^тр'
Результат - f - пустота. Пробовал все что можно
short_name ~* '^тр'
short_name ~ '^тр'
short_name like '^тр'.
short_name ilike '^тр'.

вместо '^тр' пробоал 'тр%'
Работает если только явно прописать '^Тр'.
пробовал делать lower(short_name) - результат тот же.
Уже не знаю куда копать. Возможно ошибка тупая и очевидная, но я ее не вижу
Заранее всем спасибо.
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Re: Не правильный результат запроса с регулярными выражениями.

Автор оригинала: Postnik
Уже не знаю куда копать.
Что говорят
Код:
show lc_collate;
show lc_ctype;
?
 

Postnik

Новичок
Re: Re: Не правильный результат запроса с регулярными выражениями.

Автор оригинала: Sad Spirit
Что говорят
Код:
show lc_collate;
show lc_ctype;
?
Оба "С".
Кхм. Согласен. Тогда понято почему lower и upper не работают.
Тогда не много другой вопрос ) На сколько данное решение хорошо?
Решение проблeмы LC_COLLATE
или такое решение
патчим utf-8 collate на FreeBSD
Или оно тоже вызовет некие проблемы. И еще раз спасибо )))
PS Извиняюсь за нубские вопросы -только учусь )
 

dr-sm

Новичок
может я что-то не понимаю, но у меня под линух все работает без падченья

Код:
drsm@dummy:~$ uname -a
Linux dummy 2.6.32-23-generic-pae #37-Ubuntu SMP Fri Jun 11 09:26:55 UTC 2010 i686 GNU/Linux
drsm@dummy:~$ locale -a
C
en_AG
en_AU.utf8
en_BW.utf8
en_CA.utf8
en_DK.utf8
en_GB.utf8
en_HK.utf8
en_IE.utf8
en_IN
en_NG
en_NZ.utf8
en_PH.utf8
en_SG.utf8
en_US.utf8
en_ZA.utf8
en_ZW.utf8
POSIX
drsm@dummy:~$ sudo locale-gen ru_RU.utf8
[sudo] password for drsm: 
Generating locales...
  ru_RU.UTF-8... done
Generation complete.
drsm@dummy:~$ locale -a
C
en_AG
en_AU.utf8
en_BW.utf8
en_CA.utf8
en_DK.utf8
en_GB.utf8
en_HK.utf8
en_IE.utf8
en_IN
en_NG
en_NZ.utf8
en_PH.utf8
en_SG.utf8
en_US.utf8
en_ZA.utf8
en_ZW.utf8
POSIX
ru_RU.utf8
Код:
CREATE DATABASE qqq
  WITH ENCODING='UTF8'
       OWNER=postgres
       LC_COLLATE='ru_RU.UTF-8'
       LC_CTYPE='ru_RU.UTF-8'
       CONNECTION LIMIT=-1;
 

Postnik

Новичок
dr-sm
Сколько я понял это проблема UTF-8 в pgsql только на фряхе
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
А LIKE 'тр%' чем не подошел?
 

Postnik

Новичок
Все тем же. Пустой результат возвращает. Он ни в какую не хочет игнорировать регистр букв. А мне нужно искать как раз с игнорированием регистра. Скорее всего дело действительно в LC_COLLATE и lc_ctype
 

Postnik

Новичок
Мда. Чего то не падчится

-~{}~ 15.07.10 19:33:

Автор оригинала: Welcome
~* '(?i)^тр'
Пробывали?
не катит ))

:( Вообщем проблема актуальна. Пропатчил - проблема осталась

-~{}~ 15.07.10 22:49:

Все. Всем спасибо. Победил.
Кому интересно. патчим utf-8 collate на FreeBSD (вторая ссылка). и чуток меняем запрос(добавляем lower) И все
 

fixxxer

К.О.
Партнер клуба
эта проблема известна уже лет 10 :) гуглится за 10 секунд
 
Сверху