выбрать из — на основе значения в формате JSON

Допустим, у меня есть таблица базы данных с несколькими общими столбцами, такими как имя, пол, возраст,...

Кроме того, у меня есть дополнительный столбец, использующий тип данных JSON (доступен в Postgres 9.2) с произвольной длиной и произвольными полями в JSON:

{"occupation":"football"}

{"occupation":"football", "hair-colour":"black"}

{"hair-style":"curly"}

Используя новые функции Postgres 9.3, я хочу, например, вернуть все строки с occupation = Football.

Что-то вроде этого псевдо: select * from table where json_field.occupation = football

Есть ли способ сделать это?


person Filip    schedule 10.07.2013    source источник
comment
дубликат: stackoverflow.com/questions/10560394/   -  person nif    schedule 10.07.2013
comment
Я уже видел это. Я намерен избегать пользовательских функций, упомянутых в рассматриваемом ОБНОВЛЕНИИ I. И структура ответа кажется отличной от моей.   -  person Filip    schedule 10.07.2013
comment
Плакат ответа на повторяющийся вопрос использовал функцию json_to_elements для создания нескольких строк из массива. Таким образом, структура идентична вашей, которая содержит один объект JSON в каждой строке. И никакая пользовательская функция не использовалась. Решение точно такое же, как вы приняли.   -  person nif    schedule 10.07.2013


Ответы (1)


Если я правильно понял руководство, вы можете получить доступ к полям JSON с операторами -> и ->>. Запрос будет выглядеть так:

SELECT *
FROM your_table
WHERE json_field ->> 'occupation' = 'football';
person Ihor Romanchenko    schedule 10.07.2013