мне нужно запросить поле таблицы jsonb с помощью нормальных функций.
Это мое поле json
"campi":[
{
"label":"testLabel",
"valore":[
"testValore",
"testValore2"
],
"idCampo":"testID",
"idCampoTP":"testCampoID",
"proprieta":[
{
"label":"testLabel",
"idProprieta":"testProp"
}
],
"idTipoCampo":"idTipoCampoID"
},
{
"label":"testLabel2",
"valore":[
"testValore3",
"testValore4"
],
"idCampo":"testID2",
"idCampoTP":"testCampoID2",
"proprieta":[
{
"label":"testLabel2",
"idProprieta":"testProp2"
}
],
"idTipoCampo":"idTipoCampoID2"
}
]
}
Можно ли даже сделать запрос, подобный этому?
SELECT customfield from procedura WHERE customfield->'campi' @> '[{"label":"testLabel3"}]'
Но с testLabel3 с такими же подстановочными знаками: testLabel%
Другой вопрос, возможно ли даже сделать запрос для получения объекта (ов) "campi" с "valore" из "testValore"?
Запрос моей мечты был:
SELECT customfield from procedura WHERE customfield->'campi' @> '[{"label":"testLabel%"}]'
С% в качестве подстановочного знака
РЕДАКТИРОВАТЬ:
IМожно сделать простой запрос:
SELECT customfield FROM procedura, jsonb_array_elements(procedura.customfield #> '{campi}') obj
WHERE obj->>'idCampoTP' LIKE 'testCampoID3%' group by procedura.id;
, но я не могу понять, как искать в массиве valore field
РЕДАКТИРОВАТЬ:
Я нашел этот способ, но мне кажется, дерьмовое решение
SELECT customfield FROM procedura, jsonb_array_elements(procedura.customfield #> '{campi}') obj
WHERE obj->>'valore' LIKE '%stValore5%' group by procedura.id;