1
resposta

Como coletar dados de um objeto

Pessoal, tenho no meu banco de dados esses valores em uma coluna:

+------------------------------+
| answer                       |
+------------------------------+
| {"12":"1","13":"1","14":"3"} |
| {"12":"2","13":"3","14":"1"} |
| {"12":"2","13":"3","14":"1"} |
| {"12":"2","13":"3","14":"1"} |
+------------------------------+

Como faço para coletar os valores específicos de cada chave? Exemplo: Quero listar somente os valores que tem a chave 12. Terá que aparecer: 1-2-2-2. A coluna está em text a saída da consulta ser em int?

1 resposta

Oi, Carolina! Tudo bem?

Desde já, peço desculpas pela demora em retornar.

Para coletar os valores específicos de cada chave, você pode utilizar a função JSON_EXTRACT(). Ela permite extrair valores de um objeto JSON com base em um caminho especificado. No seu caso, você pode usar a seguinte consulta para listar somente os valores com a chave 12:

SELECT JSON_EXTRACT(ANSWER, '$."12"') FROM sua_tabela;

Depois da cláusula SELECT, iniciamos a função JSON_EXTRACT indicando seu nome e depois passando como parâmetro a coluna da sua tabela e um conteúdo específico entre aspas simples: '$."12"'.

  • O carácter cifrão ($) é utilizado para representar o documento;
  • o ponto seguido da abertura de aspas duplas, do número 12 e do fechamento das aspas (."12") trata-se um seletor específico para as chaves iguais a "12".

Por fim, utilizamos FROM e o nome da tabela para finalizar a sintaxe do SELECT. Dessa forma, os valores retornados pela consulta serão 1, 2, 2 e 2, que correspondem aos valores da chave 12 em cada um dos registros da nossa tabela.

Quanto à sua pergunta sobre a saída da consulta ser em INT, é possível converter o valor retornado pela função JSON_EXTRACT() para inteiro utilizando a função CAST():

SELECT CAST(JSON_EXTRACT(ANSWER, '$."12"') AS signed) 
FROM sua_tabela;

Inicialmente, precisamos iniciar a função CAST passando seu nome, depois, adicionamos como parâmetro o código que construímos antes (referente ao JSON_EXTRACT). Por fim, usamos a cláusula AS (que significa "como" em português) juntamente com signed, o qual transforma os dados para um formato de inteiro.

Espero ter ajudado, Carol! Caso surjam dúvidas após minha explicação ou durante os seus estudos, fico à disposição.

Um forte abraço!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!