PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment interroger les valeurs nulles dans le type de champ json postgresql ?

vous pouvez utiliser le fait que elem->'occupation2' renvoie la chaîne null de type json , donc votre requête sera :

select
    *
from  json_array_elements(
  '[{"name": "Toby", "occupation": "Software Engineer"},
    {"name": "Zaphod", "occupation": "Galactic President"} ,
    {"name2": "Zaphod", "occupation2": null} ]'
) as elem
where (elem->'occupation2')::text = 'null'

{"name2": "Zaphod", "occupation2": null}

Si vous souhaitez obtenir tous les éléments dont la valeur est null en JSON ou la clé n'existe pas, vous pouvez simplement faire :

select
    *
from  json_array_elements(
  '[{"name": "Toby", "occupation": "Software Engineer"},
    {"name": "Zaphod", "occupation": "Galactic President"} ,
    {"name2": "Zaphod", "occupation2": null} ]'
) as elem
where (elem->>'occupation2') is null

{"name": "Toby", "occupation": "Software Engineer"}
{"name": "Zaphod", "occupation": "Galactic President"}
{"name2": "Zaphod", "occupation2": null}