Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

152
Visualizações
Obtenga valores de objetos anidados de JSON en Postgres

Así que aquí está mi columna JSON en mi base de datos de Postgres:

 { "objekt_art": { "86": { "code": "86", "bezeichnung_de": "Kino", "bezeichnung_fr": "Cinéma", "bezeichnung_it": "Cinema", "bezeichnung_en": null, "kurz_bezeichnung_de": "Kino", "relevant_fuer_berechnung_steuerquote": true }, "27": { "code": "27", "bezeichnung_de": "Kiosk", "bezeichnung_fr": "Kiosque", "bezeichnung_it": "Chiosco", "bezeichnung_en": null, "kurz_bezeichnung_de": "Kiosk", "relevant_fuer_berechnung_steuerquote": true } } }

Necesito poder consultar bezechnung_de, por ejemplo, donde el código = 86. El número de código que puedo pasar de otra tabla.

¿Cómo puedo, por ejemplo, hacer una consulta con dos columnas? Uno con el número y el segundo con bezeichnung_de.

Me gusta esto:

 Code Bez 86 Kino
over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Estructura de datos de muestra y tabla de muestra para unir datos: dbfiddle

 select je.value -> 'code' as "Code", je.value -> 'bezeichnung_de' as "Bez" from test t cross join jsonb_each((data::jsonb ->> 'objekt_art')::jsonb) je -- In table test_join I insert value 86 for join record inner join test_join tj on je.key::int = tj.json_id
over 4 years ago · Santiago Trujillo Relatório

0

Como conoces el código, esto es bastante fácil:

 select t.the_column -> 'objekt_art' -> '86' ->> 'code' as code, t.the_column -> 'objekt_art' -> '86' ->> 'bezeichnung_de' as bez from the_table t where ...

El valor '86' puede ser un parámetro. Sin embargo, la primera expresión para seleccionar el código no es realmente necesaria, ya que podría reemplazarla con el valor constante (= parámetro) directamente.

Si la clave JSON "externa" no tiene el mismo valor que el valor del code , podría usar algo como esto:

 select o.value ->> 'code' as code, o.value ->> 'bezeichnung_de' as bez from the_table t cross join jsonb_each(t.the_column -> 'objekt_art') o(key, value) where o.key = '86' and ... other conditions ...

Si está utilizando Postgres 13 o posterior, esto también se puede escribir como una expresión de ruta JSON:

 select a.item ->> 'code' as code, a.item ->> 'bezeichnung_de' as bez from ( select jsonb_path_query_first(t.the_column, '$.objekt_art.* ? (@.code == "86")') as item from the_table t where .... ) a

Todos los ejemplos asumen que la columna está definida con el jsonb de datos que debería ser. Si no es así, debes lanzarlo: the_column::jsonb

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda