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

Как да филтрирате редове по вложени стойности в json колона?

Вашето запитване е близо. json_each() е ключова функция. Или jsonb_each() за jsonb . Няколко подобрения:

SELECT *
FROM   things t
WHERE  EXISTS (
   SELECT FROM json_each(t.blueprint) b
   WHERE  b.value->>'name' ILIKE 'azamund'
   );

Стар sqlfiddle
db<>fiddle тук

Алтернатива с JSON масив

Вече видяхте свързания ми отговор за JSON масиви:

Докато заявката за вложени JSON обекти изглежда също толкова проста, има превъзходна поддръжка на индекс за масива:

Може да стане по-прост/по-ефективен с SQL/JSON в Postgres 12 ...



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Извадете месеците от дата в PostgreSQL

  2. SQL заявка, използваща IN със списък, много бавна

  3. База данни на Zend Последен идентификатор на вмъкнат ред. (Използване на postgres)

  4. Как да направите тази групова заявка за ActiveRecord в postgres

  5. Проблеми с връзката с SQLAlchemy и множество процеси