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

Extrahieren von Schlüsselnamen mit wahren Werten aus dem JSONB-Objekt

jsonb hat einen Gleichheitsoperator (=; im Gegensatz zu json ), also könntest du schreiben

SELECT key
FROM   jsonb_each('{"aaa": true, "bbb": false}')
WHERE  value = jsonb 'true'

(mit jsonb_each_text() Sie verlassen sich auf die Textdarstellung einiger JSON-Werte).

Sie können sogar einige zusätzliche Werte hinzufügen, wenn Sie möchten:

WHERE  value IN (to_jsonb(TRUE), jsonb '"true"', to_jsonb('truthy'))

IN verwendet den Gleichheitsoperator unter der Haube.