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@gmx.net