PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Wie kann man im Json-Feldtyp Postgresql nach Nullwerten fragen?

Sie können die Tatsache verwenden, dass elem->'occupation2' gibt den String null zurück vom Typ json , Ihre Abfrage lautet also:

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}

Wenn Sie alle Elemente erhalten möchten, bei denen der Wert null ist in JSON oder Schlüssel existiert nicht, Sie können einfach Folgendes tun:

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}