PostgreQL извлекает данные из поля Json с типом многомерного массива - PullRequest
0 голосов
/ 24 октября 2018

Я нашел запрос, который извлекает данные из таблицы столбцов типа json.

Моя таблица выглядит следующим образом:

`ID | ParentID |        Details`

`-------------------------------------------------------------------------------------------`

`1  |  10      | {"_translated": {"en_US": {"is_draft": "false"}, "default_locale": "en"}}`

`2  |  20      | {"_translated": {"en_US": {"is_draft": "true"}, "default_locale": "en"}}`

`3  |  30      | {"_translated": {"en_CA": {"is_draft": "true"}, "default_locale": "en"}}`

`4  |  40      | {"_translated": {"en_CA": {"is_draft": "false"}, "default_locale": "en"}}`

Я хочу получить строку, чья is_draft = false.

Пожалуйста, кто-нибудь может помочь мне в этом вопросе.

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

Учитывая, что мы даже не знаем, какие ключи будут иметь дочерние объекты JSON с is_draft, установленным на false, здесь можно было бы просто привести JSON к тексту и найти его, используя LIKE:

SELECT *
FROM yourTable
WHERE Details::text LIKE '%"is_draft": "false"%';

Демо

0 голосов
/ 24 октября 2018

Попробуйте:

SELECT 
   id,
   parent_id, 
   details
FROM books
WHERE details->'_translated' -> 'en_US' -> 'is_draft' ='false' 
OR details->'_translated' -> 'en_CA' -> 'is_draft' ='false' ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...