Det finns ingen operatör för jämlikhet (eller ojämlikhet) för datatypen json
som helhet, eftersom jämställdhet är svårt att etablera. Överväg jsonb
i Postgres 9.4 eller senare, där detta är möjligt. Mer detaljer i detta relaterade svar på dba.SE (sista kapitlet):
- Hur tar man bort kända element från en JSON[]-array i PostgreSQL?
SELECT DISTINCT json_column ...
eller ... GROUP BY json_column
misslyckas av samma anledning (ingen jämställdhetsoperatör).
Castar båda sidor av uttrycket till text
tillåter =
eller <> operatorer, men det är normalt inte tillförlitligt eftersom det finns många möjliga textrepresentationer för samma JSON-värde. I Postgres 9.4 eller senare, casta till
jsonb
istället. (Eller använd jsonb
till att börja med.)
Men , för det här specifika fallet (tomt objekt ) det fungerar bra:
select * from test where foo::text <> '{}'::text;