public inbox for [email protected]
help / color / mirror / Atom feedFrom: Peter Eisentraut <[email protected]>
To: Matt Magoffin <[email protected]>
To: [email protected]
Subject: Re: Collation with upper and numeric comparing in unexpected way
Date: Wed, 21 Jan 2026 08:52:23 +0100
Message-ID: <[email protected]> (raw)
In-Reply-To: <[email protected]>
References: <[email protected]>
On 20.01.26 19:36, Matt Magoffin wrote:
> I am using Postgres 17 and trying to configure a collation that sorts upper case before lower case and includes numeric sorting:
>
> CREATE COLLATION testsort (provider = icu, locale = 'und-u-kf-upper-kn’);
>
> These comparisons are working as I expected:
>
> SELECT 'id-45' < 'id-123' COLLATE testsort; -- true (45 before 123)
>
> SELECT 'id' < 'ID' COLLATE testsort; -- false (upper case before lower case)
>
> However combining them resulted in an unexpected result:
>
> SELECT 'id-45' < 'ID-123' COLLATE testsort; -- true
>
> I thought that last one would be false because “ID” would come before “id”. Is there a way to configure the collation to achieve that? I’m trying to match the sorting behaviour in external application code.
I suspect that this is because the effect of the numeric sorting is a
primary difference and the case difference is only a tertiary difference.
In other words, imagine the numeric sorting pass replacing all numbers
by hypothetical letters corresponding to the numeric order, like
'id-45' -> 'id-X'
'id-123' -> 'id-Z'
'ID-123' -> 'ID-Z'
Then you would have
'id-45' < 'ID-123' =>
'id-X' < 'ID-Z'
which would be correct.
This is just my guess from the outside. The numeric sorting is not a
part of the Unicode Collation Algorithm standard, it is an extension by
ICU, so one would have to dig into the code or documentation there, but
I didn't find anything.
I don't know if there is a way to customize this further to get the
effect you want. Maybe you could reach out to an ICU support forum to
get more expert insights there.
view thread (3+ messages) latest in thread
reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: [email protected]
Cc: [email protected], [email protected], [email protected]
Subject: Re: Collation with upper and numeric comparing in unexpected way
In-Reply-To: <[email protected]>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox