2017-07-07 2 views
2

Ich benutze Postgres 9.6 und ich habe eine JSONB Spalte, in der einige Zeilen NULL Wert haben und einige haben dict Werte wie {"notify": false}.Wie `jsonb_set` in Spalte mit Nullwerten verwenden

Ich möchte die Spaltenwerte mit mehr Wörterbuch Schlüssel/Wert-Paare zu aktualisieren.

UPDATE accounts SET notifications = jsonb_set(notifications, '{"alerts"}', 'false'); 

Ist für die Fälle arbeiten, wo ich bereits Werte wie {"notify": false} haben. Das Endergebnis wird wie erwartet {"alerts": false, "notifications": false}.

Aber der Wert Ich versuche, uns zu aktualisieren NULL, nichts ist in der Datenbank aktualisiert.

Können Sie mir irgendwelche Ideen geben, wie ich die NULL Werte auch aktualisieren kann, so dass das Endergebnis für sie Werte wie {"notify": false} sein werden. Das Endergebnis wird als {"alerts": false}

+0

Haben Sie versucht, 'jsonb_set (verschmelzen (Benachrichtigungen, '{}'),‚{“ Warnungen "} ',' false ')' –

Antwort

4

Verwenden erwartet coalesce():

UPDATE accounts 
SET notifications = jsonb_set(coalesce(notifications, '{}'), '{"alerts"}', 'false') 

oder noch einfacher:

UPDATE accounts 
SET notifications = coalesce(notifications, '{}') || '{"alerts": false}' 
Verwandte Themen