запрос объекта json из таблицы в postgreSQL

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

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

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}}

person singh    schedule 24.04.2015    source источник
comment
Укажите версию PostgreSQL (select version())   -  person Vivek S.    schedule 24.04.2015
comment
Версия PostgreSQL 9.4.0.   -  person singh    schedule 24.04.2015


Ответы (1)


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

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

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

Думайте о переключении на тип данных jsonb.

person Kouber Saparev    schedule 24.04.2015