From: | "David G(dot) Johnston" <david(dot)g(dot)johnston(at)gmail(dot)com> |
---|---|
To: | Anton Ananich <anton(dot)ananich(at)gmail(dot)com> |
Cc: | "pgsql-sql(at)postgresql(dot)org" <pgsql-sql(at)postgresql(dot)org> |
Subject: | Re: Custom sort order with jsonb key |
Date: | 2016-06-23 19:03:52 |
Message-ID: | CAKFQuwYAK58a36Yrh4NtSbj9i7b2uPjZjdJva+Qabmst+AEBFQ@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
On Thu, Jun 23, 2016 at 2:38 PM, Anton Ananich <anton(dot)ananich(at)gmail(dot)com>
wrote:
> Dear colleagues,
>
> I have a table in PostgreSQL with some data:
>
> create table FOO (
> key jsonb
> );
>
> insert into FOO(key) values ('[2014]');
> insert into FOO(key) values ('[2015]');
> insert into FOO(key) values ('[2016]');
> insert into FOO(key) values ('[2014, 2]');
> insert into FOO(key) values ('[2014, 2, 3]');
> insert into FOO(key) values ('[2014, 3]');
> insert into FOO(key) values ('[2014,2,4]');
> insert into FOO(key) values ('[2014, 2,4]');
> insert into FOO(key) values ('[2014,3,13]');
> insert into FOO(key) values ('[2014, 2, 15]');
>
> And I try to sort these rows like that:
>
> SELECT key FROM FOO order by key;
>
> The result is:
>
> [2014]
> [2015] <==
> [2016] <==
> [2014, 2]
> [2014, 3] <==
> [2014, 2, 3]
> [2014, 2, 4]
> [2014, 2, 4]
> [2014, 2, 15]
> [2014, 3, 13]
>
> But what I need is
>
> [2014]
> [2014, 2]
> [2014, 2, 3]
> [2014, 2, 4]
> [2014, 2, 4]
> [2014, 2, 15]
> [2014, 3] <==
> [2014, 3, 13]
> [2015] <==
> [2016] <==
>
> is there a way to achieve it?
>
Maybe try:
ORDER BY key->>1::int, key->>2::int, key->>3::int
There is no easy way, presently, to convert from a json array to a
PostgreSQL array. If you do that I believe that those sort based upon the
values and not lexically.
SELECT *
FROM ( VALUES (ARRAY[2014]::int[], ARRAY[2014,2]::int[],
ARRAY[2015]::int[]) ) vals (v)
ORDER BY v;
David J.
From | Date | Subject | |
---|---|---|---|
Next Message | Steve Midgley | 2016-06-23 19:14:44 | Re: Custom sort order with jsonb key |
Previous Message | Anton Ananich | 2016-06-23 18:38:54 | Custom sort order with jsonb key |