postgresql проверяет, существует ли значение json с хорошей производительностью, например: index - PullRequest
0 голосов
/ 05 ноября 2018

Я хочу получить строки, в которых значение json равно '111'

id   json
1    {"1":"111", "2":"222"}
2    {"1":"111", "3":"333"}
3    {"4":"444", "2":"222"}
4    {"4":"666", "2":"111"}
5    {"1":"777", "3":"888"}

Ответы [ 2 ]

0 голосов
/ 05 ноября 2018

Если вы не уверены в ключах, по которым нужно искать 111, вы можете просто сделать:

SELECT *
FROM json_test
WHERE json::text LIKE '%"111"%';

См. ДЕМО здесь.

0 голосов
/ 05 ноября 2018

демо: дб <> скрипка

SELECT *
FROM table
WHERE json ->> '1' = '111' 
      or 
      json ->> '2' = '111'


Обновленный набор данных:

демонстрационная <> дб: скрипка

SELECT 
    id, json
FROM 
    json_test, json_each_text(json)
WHERE 
    value = '111'

Расширение объекта json (создание таблицы с парами ключ / значение), фильтрация строк, где значение = '111'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...