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   [EMAIL PROTECTED]


---------------------------(end of broadcast)---------------------------
TIP 4: Don't 'kill -9' the postmaster

Reply via email to