sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvordan forespørger man en json-kolonne for tomme objekter?

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;


  1. Konverter Datetime-kolonnen fra UTC til lokal tid i select statement

  2. Sådan returnerer du venstre eller højre del af en streng i MySQL

  3. Udskalering af Moodle-databasen

  4. Beregn antallet af poster for hver dato mellem 2 datoer