2015-04-24 4 views
1

Я хочу использовать, где условие для объекта json в таблице, в postgreSql. как мне нужно это сделать, например: у меня есть таблица «test», у нее есть три имени столбца (varchar), url (varchar), more (json). Мне нужно получить дату, когда css21Colors = Purple. еще один тип json, а ниже - значения большего поля.запрос объекта json из таблицы в postgreSQL

Пожалуйста, дайте мне знать, что должно быть синтаксисом запроса для этого же?

more = {"colorTree":{"Purple":[{"Spanish Violet":"#522173"}], 
"Brown":[{"Dark Puce":"#4e3347"}],"White":[{"White":"#ffffff"}], 
"Black":[{"Eerie Black":"#1d0d27"}],"Gray":[{"Rose Quartz":"#a091a4"}]}, 
"sizeoutscount":0,"css21Colors":{"Purple":69,"Brown":5,"White":4,"Black":17,"Gray":3}, 
"sizeins": [],"sizeinscount":0,"sizeouts":[],"allsizes":["8","10","16"], 
"css3Colors": {"Rose Quartz":3,"White":4,"Dark Puce":5,"Eerie Black":17,"Spanish 
Violet":69},"hexColors":{"#522173":69,"#4e3347":5,"#ffffff":4,"#1d0d27":17,"#a091a4":3}} 
+1

Упоминание PostgreSQL версии ('select version()') –

+0

PostgreSQL версия - 9.4.0 – singh

ответ

1
SELECT more->'css21Colors'->'Purple' FROM test; 

Кроме того, вы можете запросить только строки, содержащие этот ключ.

SELECT 
    more->'css21Colors'->'Purple' 
FROM 
    test 
WHERE 
    (more->'css21Colors')::jsonb ? 'Purple'; 

Переключение ума на jsonb Тип данных.

+0

Спасибо, он работает. – singh

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