Как искать столбец на основе json столбца в PostgreSQL - PullRequest
1 голос
/ 27 февраля 2020

У меня есть JSON столбец, подобный этому

данные (имя столбца)

row 1 [58,96,36,196,25,23] 
row 2 [26,654,269,22,96]

как написать запрос

$user = 96;

как искать $user с использованием базы данных PostgreSQL, как написать запрос с использованием базы данных PostgreSQL, основанной на $user поиске по всем столбцам таблицы

Ответы [ 2 ]

0 голосов
/ 27 февраля 2020

Если вы используете jsonb (что настоятельно рекомендуется), вы можете использовать оператор содержимого @>:

select *
from the_table
where data @> '96'::jsonb

Если вы используете Postgres 12, вы также можете использовать новый Выражение пути JSONB:

select *
from the_table
where data @? '$[*] ? (@ == 96)'
0 голосов
/ 27 февраля 2020

Использование JSON функций , что-то вроде:

with table_with_json as (
    select '[58,96,36,196,25,23]'::json json_column union all
    select '[26,654,269,22,96]'::json
)
select 
    twj.json_column 
from 
    table_with_json twj 
where 
    exists (select t.value from json_array_elements(twj.json_column) t where t.value::text = $user::text);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...