From: | Peter Eisentraut <peter_e(at)gmx(dot)net> |
---|---|
To: | Jiang Sheng <jiangsheng(at)sis(dot)sh(dot)cn> |
Cc: | pgsql-bugs(at)postgresql(dot)org |
Subject: | Re: Different result when using '=' and 'like' in unicode |
Date: | 2002-11-17 21:21:09 |
Message-ID: | Pine.LNX.4.44.0211171451440.12428-100000@localhost.localdomain |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-bugs |
Jiang Sheng writes:
> the sql is
> select * from tbl_test where name = 'ç³ç°';
>
> but the result contains other data, such as ç³çº, æ³çº, æ³ç°
>
> and I changed the sql to
> select * from tbl_test where name like 'ç³ç°';
> select * from tbl_test where name ilike 'ç³ç°';
>
> the results both correct.
The LIKE operator uses a character-by-character comparison (which could
quite possibly behave oddly if your strings contain combining characters,
but that is a different issue). The = operator uses the host operating
system's locale facilities to do a locale-aware comparison. So in general
LIKE and = are not interchangeable.
If the result you get for = is wrong even under some locale, then you
probably don't have the right locale set on your server. Recent glibc
systems require you to set your locale to xx_YY.utf8 (rather than just
xx_YY) if you want to use Unicode.
--
Peter Eisentraut peter_e(at)gmx(dot)net
From | Date | Subject | |
---|---|---|---|
Next Message | Jiang Sheng | 2002-11-18 01:48:27 | Re: Different result when using '=' and 'like' in unicode mode |
Previous Message | Jiang Sheng | 2002-11-17 06:18:35 | Different result when using '=' and 'like' in unicode mode |