Запрос столбца json на основе целочисленного значения в Postgres - PullRequest
0 голосов
/ 27 апреля 2018

Я использую Postgres v9.3

У меня есть таблица с именем temp, в которой есть столбец all_data. Значение выглядит примерно так: -

{"Accountid" : "1364", "Personalid" : "4629-87c3-04e6a7a60208", "quote_number" : "QWQA62364384"}

Теперь я хочу запросить столбец all_data по accountid = 1364.

Не могли бы вы сказать, что будет запрос?

1 Ответ

0 голосов
/ 27 апреля 2018

Используйте оператор ->>

select *
from temp
where all_data ->> 'Accountid' = '1364';

Онлайн пример для 9.3: http://sqlfiddle.com/#!15/55981/1

Однако приведенное выше не будет работать, если JSON содержит массив вместо объекта JSON. Например. значение типа '[1,2]'::json приведет к сбою этого запроса.

Начиная с версии 9.4 и выше, вы можете проверить это, используя json_typeof(), но с вашей, скорее всего, неподдерживаемой версией, единственный обходной путь, о котором я могу подумать, - это преобразовать столбец в текст и исключить те, которые начинаются с [

with valid_rows as (
  select *
  from temp
  where all_data::text not like '[%'
)
select *
from valid_rows
where all_data ->> 'Accountid' = '1364';

Онлайн пример для 9.3: http://sqlfiddle.com/#!15/d01f43/3

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