2017-07-07 3 views
2

J'utilise Postgres 9.6 et j'ai une colonne JSONB dans laquelle certaines lignes ont une valeur NULL et d'autres ont des valeurs dict comme {"notify": false}.Comment utiliser `jsonb_set` sur une colonne avec des valeurs nulles

Je souhaite mettre à jour les valeurs de colonne avec plusieurs paires clé/valeur de dictionnaire.

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

fonctionne pour les cas où je l'ai déjà des valeurs telles que {"notify": false}. Le résultat final devient comme prévu {"alerts": false, "notifications": false}.

Mais la valeur que j'essaie de nous mettre à jour NULL, rien n'est mis à jour dans la base de données.

Pouvez-vous me donner des idées sur la façon de mettre à jour les valeurs de NULL, de sorte que le résultat final pour ces valeurs sera {"notify": false}. Le résultat final est comme prévu {"alerts": false}

+0

Avez-vous essayé 'jsonb_set (s'unir (notifications, '{}'), « { » alertes "}", "faux") ' –

Répondre

4

Utilisation coalesce():

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

ou encore plus simple:

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