Em um banco de dados postgresql, tenho uma tabela com 2 colunas:
A coluna1 é do tipo VARCHAR e contém várias linhas de ids neste formato: ID1123312
A coluna2 é do tipo JSONB e contém várias linhas de jsons que possuem esta estrutura:
{
"a": [
{
"a1": "2022-01-01",
"a2": "2026-01-31",
"a3": 1
}
],
"b": [
{
"b1": "J",
"b2": "1231342138adc2fehj3j21321321321kjk1423j32k9"
}
],
"c": [
{
"c1-1": "2021-02-01",
"c1-2": "2021-01-01"
},
{
"c2-1": "2021-04-01",
"c2-2": "2021-03-01"
}
]
}
Eu preciso construir uma instrução SELECT para retornar a linha acima dando o valor de b2 (1231342138adc2fehj3j21321321321kjk1423j32k9) como parâmetro de entrada.
Algo como:
SELECT *
FROM table
WHERE [Column2 contains b which contains b2 which has value '1231342138adc2fehj3j21321321321kjk1423j32k9'] ;
Ou apenas:
SELECT *
FROM table
WHERE [value '1231342138adc2fehj3j21321321321kjk1423j32k9' exists in row from Column2 ]
Só não sei como dar esta instrução.
Qualquer ajuda é muito apreciada.
Você pode usar
jsonb_path_exists
junto com uma consulta de caminho JSONdb<>violino
O
[*]
neste caminho significa "qualquer elemento da matriz" e? (@ == ...)
significa um predicado de que o valor nesse caminho deve ser igual ao seu valor.