- Categorias:
JSON_EXTRACT_PATH_TEXT¶
Analisa o primeiro argumento como uma cadeia de caracteres JSON e retorna o valor do elemento apontado pelo caminho no segundo argumento. Isso é equivalente a TO_VARCHAR(GET_PATH(PARSE_JSON(JSON), PATH))
Sintaxe¶
JSON_EXTRACT_PATH_TEXT( <column_identifier> , '<path_name>' )
Argumentos¶
column_identifier
O nome da coluna com os dados que você deseja extrair.
path_name
Uma cadeia de caracteres que contém o caminho para o elemento que você quer extrair.
Retornos¶
O tipo de dados do valor retornado é VARCHAR.
Notas de uso¶
A função retorna NULL se o nome do caminho não corresponder a nenhum elemento.
A sintaxe do nome do caminho é a notação padrão JavaScript; ela consiste em uma concatenação de nomes de campo (identificadores) precedida por pontos (por exemplo,
.
) e operadores de índice (por exemplo,[<índice>]
):O primeiro nome de campo não exige que o período principal seja especificado.
Os valores do índice nos operadores de índice podem ser inteiros não negativos (para matrizes) ou literais de cadeia de caracteres de caracteres com aspas simples ou duplas (para campos de objetos).
Para obter mais detalhes, consulte Consulta de dados semiestruturados.
Para manter a consistência sintática, a notação do caminho também oferece suporte a identificadores no estilo SQL de aspas duplas, e o uso de
:
como separadores de caminho.
Exemplos¶
Criar uma tabela e inserir valores:
CREATE TABLE demo1 (id INTEGER, json_data VARCHAR); INSERT INTO demo1 SELECT 1, '{"level_1_key": "level_1_value"}'; INSERT INTO demo1 SELECT 2, '{"level_1_key": {"level_2_key": "level_2_value"}}'; INSERT INTO demo1 SELECT 3, '{"level_1_key": {"level_2_key": ["zero", "one", "two"]}}';
Usar JSON_EXTRACT_PATH_TEXT para extrair um valor de uma cadeia de caracteres simples de nível 1:
SELECT TO_VARCHAR(GET_PATH(PARSE_JSON(json_data), 'level_1_key')) AS OLD_WAY, JSON_EXTRACT_PATH_TEXT(json_data, 'level_1_key') AS JSON_EXTRACT_PATH_TEXT FROM demo1 ORDER BY id; +--------------------------------------+--------------------------------------+ | OLD_WAY | JSON_EXTRACT_PATH_TEXT | |--------------------------------------+--------------------------------------| | level_1_value | level_1_value | | {"level_2_key":"level_2_value"} | {"level_2_key":"level_2_value"} | | {"level_2_key":["zero","one","two"]} | {"level_2_key":["zero","one","two"]} | +--------------------------------------+--------------------------------------+
Usar JSON_EXTRACT_PATH_TEXT para extrair um valor de uma cadeia de caracteres de nível 2 usando um caminho de nível 2:
SELECT TO_VARCHAR(GET_PATH(PARSE_JSON(json_data), 'level_1_key.level_2_key')) AS OLD_WAY, JSON_EXTRACT_PATH_TEXT(json_data, 'level_1_key.level_2_key') AS JSON_EXTRACT_PATH_TEXT FROM demo1 ORDER BY id; +----------------------+------------------------+ | OLD_WAY | JSON_EXTRACT_PATH_TEXT | |----------------------+------------------------| | NULL | NULL | | level_2_value | level_2_value | | ["zero","one","two"] | ["zero","one","two"] | +----------------------+------------------------+
Este exemplo contém uma matriz:
SELECT TO_VARCHAR(GET_PATH(PARSE_JSON(json_data), 'level_1_key.level_2_key[1]')) AS OLD_WAY, JSON_EXTRACT_PATH_TEXT(json_data, 'level_1_key.level_2_key[1]') AS JSON_EXTRACT_PATH_TEXT FROM demo1 ORDER BY id; +---------+------------------------+ | OLD_WAY | JSON_EXTRACT_PATH_TEXT | |---------+------------------------| | NULL | NULL | | NULL | NULL | | one | one | +---------+------------------------+