- Categorias:
TRY_PARSE_JSON¶
Uma versão especial de PARSE_JSON que retorna um valor NULL se ocorrer um erro durante a análise.
Sintaxe¶
TRY_PARSE_JSON( <expr> [ , '<parameter>' ] )
Argumentos¶
Obrigatório:
expr
Uma expressão do tipo cadeia de caracteres (por exemplo, VARCHAR) com informações JSON válidas.
Opcional:
'parameter'
Constante de cadeia de caracteres que especifica o parâmetro usado para pesquisar correspondências. Valores com suporte:
Parâmetro
Descrição
d
Permita chaves duplicadas em objetos JSON. Se um objeto JSON contiver uma chave duplicada, o objeto retornado terá uma única instância dessa chave com o último valor especificado para essa chave.
s
Não permita chaves duplicadas em objetos JSON (estrito). Este valor é o padrão.
Retornos¶
Retorna um valor do tipo VARIANT com um documento JSON.
Se a entrada for NULL ou se ocorrer um erro durante a análise, a função retornará NULL.
Esta função não retorna um tipo estruturado.
Notas de uso¶
Consulte PARSE_JSON para as notas de uso.
Exemplos¶
Isto mostra um exemplo de armazenamento de diferentes tipos de dados em uma coluna VARIANT chamando TRY_PARSE_JSON para analisar cadeias de caracteres de caracteres que contêm valores que podem ser analisados como JSON:
Criar e preencher uma tabela.
CREATE OR REPLACE TEMPORARY TABLE vartab (ID INTEGER, v VARCHAR);
INSERT INTO vartab (id, v) VALUES
(1, '[-1, 12, 289, 2188, FALSE,]'),
(2, '{ "x" : "abc", "y" : FALSE, "z": 10} '),
(3, '{ "bad" : "json", "missing" : TRUE, "close_brace": 10 ');
Consultar os dados, usando TRY_PARSE_JSON. Observe que o valor para a terceira linha é NULL. Se a consulta usasse PARSE_JSON em vez de TRY_PARSE_JSON, ela falharia.
SELECT ID, TRY_PARSE_JSON(v)
FROM vartab
ORDER BY ID;
+----+-------------------+
| ID | TRY_PARSE_JSON(V) |
|----+-------------------|
| 1 | [ |
| | -1, |
| | 12, |
| | 289, |
| | 2188, |
| | false, |
| | undefined |
| | ] |
| 2 | { |
| | "x": "abc", |
| | "y": false, |
| | "z": 10 |
| | } |
| 3 | NULL |
+----+-------------------+
Consulte PARSE_JSON para obter mais exemplos.