Hi,

Am 06.01.22 um 13:36 schrieb Andreas Joseph Krogh:
På torsdag 06. januar 2022 kl. 13:31:19, skrev Thomas Markus <t.mar...@proventis.net>:

    Hi,
    Am 06.01.22 um 13:28 schrieb Andreas Joseph Krogh:
    Hi, in PG-14 this query returns "value" (with double-quotes):
    SELECT ('{"key":"value"}'::jsonb)['key'];
    ┌─────────┐
    │  jsonb  │
    ├─────────┤
    │ "value" │
    └─────────┘
    (1 row)

    and this returns 'value' (without the quotes):
    SELECT ('{"key":"value"}'::jsonb)->> 'key';
    ┌──────────┐
    │ ?column? │
    ├──────────┤
    │ value    │
    └──────────┘
    (1 row)

    How to I use the subscript syntax and get the result as varchar
    instead of JSONB, assuming I /know/ the JSON-field is a String?
    simply cast your value
    SELECT (('{"key":"value"}'::jsonb)->> 'key')::text;

    best regards
    Thoma

I think you misread my message. What I want is for the subscript-version:
('{"key":"value"}'::jsonb)['key']
to return:
┌──────────┐
│ ?column? │
├──────────┤
│ value    │
└──────────┘

instead of
┌─────────┐
│  jsonb  │
├─────────┤
│ "value" │
└─────────┘
yeah right :(

complicated but this should do:
SELECT  jsonb_build_array( ('{"key":"value"}'::jsonb)['key'] ) ->> 0;



--
*Andreas Joseph Krogh*
CTO / Partner - Visena AS
Mobile: +47 909 56 963
andr...@visena.com
www.visena.com <https://www.visena.com>
<https://www.visena.com>

Reply via email to