Skip site navigation (1) Skip section navigation (2)

Re: Different result when using '=' and 'like' in unicode

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 (view raw or flat)
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


In response to

Responses

pgsql-bugs by date

Next:From: Jiang ShengDate: 2002-11-18 01:48:27
Subject: Re: Different result when using '=' and 'like' in unicode mode
Previous:From: Jiang ShengDate: 2002-11-17 06:18:35
Subject: Different result when using '=' and 'like' in unicode mode

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group