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
In response to
pgsql-bugs by date
|Next:||From: Jiang Sheng||Date: 2002-11-18 01:48:27|
|Subject: Re: Different result when using '=' and 'like' in unicode mode|
|Previous:||From: Jiang Sheng||Date: 2002-11-17 06:18:35|
|Subject: Different result when using '=' and 'like' in unicode mode|