Der er ingen operator for ligestilling (eller ulighed) for datatypen json
som helhed, fordi ligestilling er svær at etablere. Overvej jsonb
i Postgres 9.4 eller nyere, hvor dette er muligt. Flere detaljer i dette relaterede svar på dba.SE (sidste kapitel):
- Hvordan fjerner man kendte elementer fra et JSON[]-array i PostgreSQL?
SELECT DISTINCT json_column ...
eller ... GROUP BY json_column
mislykkes af samme grund (ingen ligestillingsoperatør).
Caster begge sider af udtrykket til tekst
tillader =
eller <> operatorer, men det er normalt ikke pålideligt, da der er mange mulige tekstrepræsentationer for den samme JSON værdi. I Postgres 9.4 eller nyere, cast til
jsonb
i stedet. (Eller brug jsonb
til at begynde med.)
Men , for dette særlige tilfælde (tomt objekt ) det fungerer fint:
select * from test where foo::text <> '{}'::text;