2
respostas

[Dúvida] Campo Json está entre couchetes

Meu banco está com o json entre couchetes e não consigo extrair o id [{"id":123,"teste":exemplo},{"id":456,"teste":outro}] o json_extract não tráz os dados. Como contorno isso?

2 respostas

Se estou entendendo corretamente, você tem uma string que contém um array JSON, e você deseja extrair os valores dos IDs. No entanto, parece que você está enfrentando problemas com a função json_extract e suspeita que isso pode estar relacionado ao fato de os dados estarem entre colchetes.

Aqui estão algumas abordagens que você pode tentar para contornar esse problema:

1. Utilizando json_array_elements

Se a sua string contém um array JSON, você pode tentar usar a função json_array_elements para expandir o array em linhas e, em seguida, extrair os IDs. Veja um exemplo:

SELECT value->>'id' AS id
FROM json_array_elements('[{"id":123,"teste":"exemplo"},{"id":456,"teste":"outro"}]') AS value;

2. Removendo os colchetes manualmente

Se a sua string sempre começa e termina com colchetes e contém um array JSON, você pode remover manualmente esses colchetes antes de usar a função json_extract. Exemplo:

SELECT json_extract('[{"id":123,"teste":"exemplo"},{"id":456,"teste":"outro"}]'::json->0, 'id') AS id;

3. Utilizando jsonb_array_elements_text

Se você estiver usando um tipo JSONB, pode tentar usar jsonb_array_elements_text da seguinte forma:

SELECT value->>'id' AS id
FROM jsonb_array_elements_text('[{"id":123,"teste":"exemplo"},{"id":456,"teste":"outro"}]'::jsonb) AS value;

Lembre-se de adaptar essas consultas conforme necessário, dependendo de como você está obtendo seus dados e como estão estruturados. Essas são abordagens comuns para lidar com arrays JSON em consultas SQL.

Poxa, não deu certo, esses dados estão na coluna PRODUTO da tabela REGRA, eu quero pegar todos os valores dessa coluna para manter o vínculo com cada regra..