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

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

From
desoft@freemail.gr
Date:
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 \'*\')

From
"Kevin Grittner"
Date:
<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 \' \')

From
Tom Lane
Date:
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