Como obter um valor específico do array JSON MySQL

Suresh
 Set @a='[
      {
        "lng": "ch",    
         "zone_name": "簡體中文",
         "zone_location": "A區位置",
         "about_zone": "區域描述在這裡輸入"     
      },
      {
        "lng": "eng",    
         "zone_name": "Zone B ENG",
         "zone_location": "Zone B Location ENG",
         "about_zone": "About Zone EN"     
      },
      {
        "lng": "jp",    
         "zone_name": "ゾーン名はこちら",
         "zone_location": "ゾーンの場所はこちら",
         "about_zone": "ゾーンの説明はここに入力してください"     
      },
      {
        "lng": "es",    
         "zone_name": "Zone Locatio aquí",
         "zone_location": "Nombre de ubicación aquí",
         "about_zone": "La descripción debe ingresar aquí sobre nosotros O puede asegurarse de que no haya texto de frenado"     
      }
    ]'

Estou armazenando dados de idioma no formato JSON, tentando buscar o nome com base no idioma do usuário, ou seja, se o idioma preferido do usuário é o inglês, então deve retornar o texto em inglês.

SELECT JSON_EXTRACT (JSON_EXTRACT(@a,'$[3]'),'$.zone_name') ;

qualquer sugestão de como buscar dados com base na chave "lng" fyi, será usada na consulta Select.

usuario

Você pode usar JSON_SEARCHpara encontrar um caminho para o idioma desejado pelos usuários, por exemplo

SELECT JSON_SEARCH(@a, 'one', 'eng', null, '$[*].lng')

Isso retornará algo como "$[1].lng". Você pode então JSON_UNQUOTEesse valor e usar SUBSTRING_INDEXpara obter a parte à esquerda do ., ou seja $[1]. Isso pode ser usado como um caminho para JSON_EXTRACTquando concatenado com .zone_name:

SELECT JSON_EXTRACT(@a, CONCAT(SUBSTRING_INDEX(JSON_UNQUOTE(JSON_SEARCH(@a, 'one', 'eng', null, '$[*].lng')), '.', 1), '.zone_name'))

Resultado:

"Zone B ENG"

Demonstração em dbfiddle

Observe que o valor de saída tem aspas duplas, você pode querer removê-las JSON_UNQUOTEpara apenas obter Zone B ENG.

Observe também que você pode usar REPLACEpara substituir .lngno caminho retornado JSON_SEARCHpor .zone_name:

SELECT JSON_EXTRACT(@a, REPLACE(JSON_UNQUOTE(JSON_SEARCH(@a, 'one', 'eng', null, '$[*].lng')), '.lng', '.zone_name'))

Demonstração em dbfiddle

Se estiver usando MySQL 8.0+, você pode usar a JSON_TABLEfunção para tornar a vida muito mais fácil:

SELECT *
FROM JSON_TABLE(@a,
                "$[*]" COLUMNS(
                  lng VARCHAR(4) PATH "$.lng",
                  zone_name VARCHAR(20) PATH "$.zone_name",
                  zone_location VARCHAR(20) PATH "$.zone_location",
                  about_zone VARCHAR(20) PATH "$.about_zone"
                  )
                ) AS j
WHERE lng = 'eng'

Resultado:

lng     zone_name   zone_location           about_zone
eng     Zone B ENG  Zone B Location ENG     About Zone EN

Demonstração em dbfiddle

Este artigo é coletado da Internet.

Se houver alguma infração, entre em [email protected] Delete.

editar em
0

deixe-me dizer algumas palavras

0comentários
loginDepois de participar da revisão

Artigos relacionados

Como obter um valor específico de um array armazenado em um banco de dados mysql

Como obter valor do Json Array mysql

Como obter um valor específico de um objeto JSON

PHP como obter um valor específico do array e armazenar em `$ _SESSION`

Como obter um valor de string específico de uma resposta json do firebase

Como obter o valor de um campo específico do token JSON usando C #?

Como obter um valor de chave json específico do objeto de resposta

Como obter um valor de array específico em php

Como obter um valor de array específico em vuejs

Como cortar a matriz JSON para obter um valor específico

Como obter um valor específico de json

Como obter um valor específico de JSON

Como obter um valor json específico com regex

Como cortar a matriz JSON para obter um valor específico

Como obter um valor específico de Json usando SelectToken

Como obter um valor específico do TreeView Widget

Como obter um valor específico do componente react

como obter um nome específico do cliente em MYSQL?

Como posso atualizar um valor específico da coluna JSON do MySQL

Como remover um valor específico do array usando jQuery

Como obter um valor específico de Array de um Array no Laravel

Como obter um valor específico de um array multicamadas em Java

Como posso obter um valor de célula específico de um arquivo do Excel

como posso obter um valor específico de uma matriz que vem como resposta do servidor

Como obter valor do array JSON

NLTK: Como obter um conteúdo específico de um array em um loop com python?

Como obter um valor específico da coluna da linha atual no mysql?

Como obter documentos que não contenham objeto com valor específico dentro de um array

Como obter um valor específico de um dicionário

TOP lista

quentelabel

Arquivo