Looking to find all rows where a certain json column contains an empty object, {}. This is possible with JSON arrays, or if I am looking for a specific key in the object. But I just want to know if the object is empty. Can't seem to find an operator that will do this.
dev=# \d test Table "public.test" Column | Type | Modifiers --------+------+----------- foo | json | dev=# select * from test; foo --------- {"a":1} {"b":1} {} (3 rows) dev=# select * from test where foo != '{}'; ERROR: operator does not exist: json <> unknown LINE 1: select * from test where foo != '{}'; ^ HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts. dev=# select * from test where foo != to_json('{}'::text); ERROR: operator does not exist: json <> json LINE 1: select * from test where foo != to_json('{}'::text); ^ HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts. dwv=# select * from test where foo != '{}'::json; ERROR: operator does not exist: json <> json LINE 1: select * from test where foo != '{}'::json; ^ HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.