Обсуждение: select (\'ã\' ~* \'Ã\')=true while select (\'ã\' ilike \'Ã\')

Поиск
Список
Период
Сортировка

select (\'ã\' ~* \'Ã\')=true while select (\'ã\' ilike \'Ã\')

От
desoft@freemail.gr
Дата:
I have a freshly compiled installation of postresql on ubuntu 9.10.

Why select ('γ' ~* 'Γ') = ('γ' ilike 'Γ') IS FALSE ?

encoding is set correctly.

While ilike works correctly ~* doesn't why ?



Re: select (\'*\' ~* \'*\')=true while select (\'*\' ilike \'*\')

От
"Kevin Grittner"
Дата:
<desoft@freemail.gr> wrote:

> I have a freshly compiled installation of postresql on ubuntu
> 9.10.

What PostgreSQL version?  Compiled with what configuration options?

> encoding is set correctly.

To what?  With what character set, collation, etc.?

You've posted some of the information needed to understand the
problem, but please review this for ideas on what else might help
people identify the cause:

http://wiki.postgresql.org/wiki/Guide_to_reporting_problems

-Kevin


Re: select (\' \' ~* \' \')=true while select (\' \' ilike \' \')

От
Tom Lane
Дата:
desoft@freemail.gr writes:
> encoding is set correctly.

To what?

> While ilike works correctly ~* doesn't why ?

~* is known to have issues in multibyte encodings (eg UTF8).
Fixing this is on the TODO list, but nobody's thought of a
reasonably clean fix yet.

There is a partial solution in place for 9.0 --- it should work for
UTF8, though not for other multibyte encodings.  If you're feeling
desperate you could try backpatching this commit:
http://archives.postgresql.org/message-id/20091201210024.B1393753FB7@cvs.postgresql.org
However the path of least resistance might be to use a single-byte
encoding in your database, such as LATIN1.

            regards, tom lane