On Sun, Dec 18, 2016 at 6:08 PM, John R Pierce <pie...@hogranch.com> wrote:

> On 12/18/2016 2:52 PM, Jong-won Choi wrote:
>
>>
>> I have a NULL-able JSONB type column and want to perform upsert,
>> concatenating with the existing value.
>>
>
> NULL does not mean 'NO' value in SQL it means UNKNOWN value. sort of like
> the 'indeterminate' in math.
>
> maybe you want a NOT NULL json value that you set to ''  or something when
> its empty.
>
>
> --
> john r pierce, recycling bits in santa cruz
>
>
>
>
> --
> Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-general
>

Have you tried using CASE?

INSERT INTO Fan  (oid, campaigns, facts)  VALUES (189,'{"campaign-id":
"12345"}','{"attended": false}')
ON CONFLICT (oid)
DO UPDATE SET campaigns = EXCLUDED.campaigns,
              CASE WHEN fan.facts is NULL
                   THEN facts = EXCLUDED.facts
                   ELSE facts = fan.facts || EXCLUDED.facts
               END
    RETURNING *;

-- 
*Melvin Davidson*
I reserve the right to fantasize.  Whether or not you
wish to share my fantasy is entirely up to you.

Reply via email to