2013-07-10 1 views
4

Скажем, у меня есть таблица базы данных с нескольких общих столбцов, таких как имя, пол, возраст, ...выбрать из ... - на основе значения в формате JSON

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

{"occupation":"football"} 

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

{"hair-style":"curly"} 

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

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

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

+1

дубликат: http://stackoverflow.com/questions/10560394/how-do-i-query-using-fields-inside-the-new-postgresql-json-datatype – nif

+1

Я уже это видел. Я намерен избежать пользовательских функций, упомянутых в UPDATE I. И структура в ответе кажется отличной от моей. – Filip

+0

Плакат ответа в дублированном вопросе использовал функцию 'json_to_elements' для создания нескольких строк из массива. Таким образом, структура идентична вашей, которая содержит один объект JSON для каждой строки. И никакая пользовательская функция не использовалась. Решение точно такое же, как вы приняли. – nif

ответ

8

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

SELECT * 
FROM your_table 
WHERE json_field ->> 'occupation' = 'football'; 
+0

Это было! Спасибо. – Filip

 Смежные вопросы

  • Нет связанных вопросов^_^