sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur frågar jag en json-kolumn för tomma objekt?

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;


  1. Topp 30 mest användbara Concurrent Manager-frågor

  2. Hur man hittar antalet dagar mellan två datum i MySQL

  3. Vad är databaser?

  4. Microsoft Access Table Tips – Tricks och riktlinjer del 5