Re: [JDBC] Selecting Varchar range (through JDBC). - Mailing list pgsql-general

From Stephan Szabo
Subject Re: [JDBC] Selecting Varchar range (through JDBC).
Date
Msg-id 20020910085321.W24828-100000@megazone23.bigpanda.com
Whole thread Raw
In response to Re: [JDBC] Selecting Varchar range (through JDBC).  (Daryl Beattie <dbeattie@insystems.com>)
List pgsql-general
On Tue, 10 Sep 2002, Daryl Beattie wrote:

> Really? The collating elements are locale-specific?!? They are actually
> hard-coded somewhere??

It's part of the locale definition AFAIK. Some languages have/had
multi-character elements that have a particular sorting position that's
different than the individual characters.

> If this is so, and this is what is meant by the definition of a collating
> element, then I am going about things the entirely wrong way when trying to
> select a varchar range. In which case I would be tempted to do something
> like this instead:
>
> testdb=# select 'test' ~* '^[[.a.]-[.z.]][[.a.]-[.a.]]';
>     [same as]
> testdb=# select 'test' ~* '^[a-z][a-a]';
>
> Of course, this won't match aa-za, because it won't match ab, ac, ..., az,
> bb, bc, ..., etc.
>
> So, does anybody have any advice on how to select a range?

Umm, I'd say use an or condition for the pieces, maybe like:
 ^([a-y][a-z]|za)
(if the last had more than a-a you'd need a character set there)

That's a little ugly, but should work.

> Stephan, thanks for clearing me up on the collating elements. Perhaps it
> should be in the docs that they are locale-specific ... so that simpletons
> like me won't be misled into thinking that they can just make up collating
> elements as they seem fit.

That might be a good idea, yeah.


pgsql-general by date:

Previous
From: Daryl Beattie
Date:
Subject: Re: [JDBC] Selecting Varchar range (through JDBC).
Next
From: Alvaro Herrera
Date:
Subject: Re: database replication