PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да потърся json колона за празни обекти?

Няма оператор за равенство (или неравенство) за типа данни json като цяло, защото е трудно да се установи равенство. Помислете за jsonb в Postgres 9.4 или по-нова версия, когато това е възможно. Повече подробности в този свързан отговор на dba.SE (последна глава):

  • Как да премахнете известни елементи от JSON[] масив в PostgreSQL?

SELECT DISTINCT json_column ... или ... GROUP BY json_column неуспешно поради същата причина (няма оператор за равенство).

Прехвърляне на двете страни на израза към text позволява = или <> оператори, но това обикновено не е надеждно, тъй като има много възможни текстови представяния за същите JSON стойност. В Postgres 9.4 или по-нова версия, прехвърляйте към jsonb вместо. (Или използвайте jsonb за начало.)

Въпреки това , затози конкретен случай (празен обект ) работи добре:

select * from test where foo::text <> '{}'::text;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Проблеми с createdb в postgres

  2. Коригирайте „ГРЕШКА:  колона „colname“ не съществува“ в PostgreSQL, когато използвате UNION, EXCEPT или INTERSECT

  3. Как мога да съпоставя последните две думи в изречение в PostgreSQL?

  4. Spark Dataframes UPSERT към таблица Postgres

  5. Rails 3.1 - Натискане към Heroku - Грешки при инсталиране на postgres адаптер?