From: | "Vladimir S(dot) Petukhov" <vladimir(at)sycore(dot)org> |
---|---|
To: | Dawid Kuroczko <qnex42(at)gmail(dot)com>, pgsql-general(at)postgresql(dot)org |
Subject: | Re: Lower case |
Date: | 2005-01-26 22:33:26 |
Message-ID: | 200501262233.26378.vladimir@sycore.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general pgsql-ru-general |
pg_controldata /var/pgsql/data
...
LC_COLLATE: ru_RU
LC_CTYPE: ru_RU
bash-2.05b# psql -l
List of databases
Name | Owner | Encoding
-----------+----------+----------
testdb | postgres | UNICODE
And LIKE, ILIKE, ~ do not recognize upper/lower case..
SELECT ... ORDER BY do something like that (in English Alphabet):
a
AAAA
aaaaa
Tast12
tes
test
Test12
test12
?:(
On Wednesday 26 January 2005 10:15, Dawid Kuroczko wrote:
> On Wed, 26 Jan 2005 12:01:49 +0000, Vladimir S. Petukhov
>
> <vladimir(at)sycore(dot)org> wrote:
> > I want to do case-insensitivity search, like this
> > ... WHERE lower (column_name) LIKE lower (%value%);
> > This work fine for English..
> > But i need search for Russian words, lower() operator does not work with
> > Russian (non-English) chars, but ORDER works fine...
> > ???????????????
> > What's wrong?
>
> Welllllll... Have you made an initdb with apropriate locale setting?
> Try:
> pg_controldata /var/lib/postgresql/data
> (or wherever your db is)
> You should see lines like:
> LC_COLLATE: C
> LC_CTYPE: C
>
> If you are using Unicode these should be ru_RU.UTF-8, if not then
> ru_RU.KOI8-R or something. If you see 'C', or 'en_EN' or similar
> then you won't have Russian lower/upper support (and ORDER BY
> was just a "luck" :)).
>
> What you can do:
> pg_dump the database, initdb --locale=ru_RU; pg_restore the database.
>
> Ohhh, and since you're at it, there is one thing which makes me
> wonder and if you don't mind, please try it. :) This will require
> plperlu language, so 'createlang plperlu' and that you use
> unicode encoding in your database.
>
> Try if this function:
> CREATE OR REPLACE FUNCTION lc(text) RETURNS text AS $$
> utf8::decode($_[0]);
> return lc($_[0]);
> $$ LANGUAGE plperlu STABLE;
>
> Used as select lc(your_text_column) from your_table;
> works for Russian alphabet. :) I'm just cuuurious! :)
>
> Regards,
> Dawid
--
Скунсу и не надо быть красивым. Его и так все уважают.
Now playing:
AutoGenerated by fortune & xmms...
From | Date | Subject | |
---|---|---|---|
Next Message | Guy Rouillier | 2005-01-26 23:24:32 | Re: Partitioning Postgresql |
Previous Message | PFC | 2005-01-26 22:20:35 | Re: Calculating a moving average |
From | Date | Subject | |
---|---|---|---|
Next Message | Vladimir S. Petukhov | 2005-01-27 00:16:14 | Re: Lower case |
Previous Message | Tom Lane | 2005-01-26 20:01:28 | Re: Lower case |