Compartilhar via


ISJSON (Transact-SQL)

Aplica-se a: SQL Server 2016 (13.x) e posterior Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics Ponto de extremidade de análises SQL no Microsoft Fabric Warehouse no Microsoft Fabric

Testa se uma cadeia de caracteres contém um JSON válido.

Convenções de sintaxe de Transact-SQL

Sintaxe

ISJSON ( expression [, json_type_constraint] )  

Argumentos

expressão

A cadeia de caracteres a ser testada.

json_type_constraint

Especifica o tipo JSON a ser verificado na entrada. Os valores válidos são VALUE, ARRAY, OBJECT ou SCALAR. Introduzido no SQL Server 2022 (16.x).

Observação

Não há suporte para o argumento json_type_constraint nos pools dedicados do Azure Synapse Analytics

Valor retornado

Retorna 1 se a cadeia de caracteres contém JSON válido; caso contrário, retorna 0. Retorna NULL se a expressão é nula.

Se a instrução omitir json_type_constraint, a função testará se a entrada é uma matriz ou um objeto JSON válido e retornará 1, caso contrário, retornará 0.

Se o json_type_constraint for especificado, a função verificará o tipo JSON da seguinte maneira:

Valor Descrição
VALUE Testes para um valor JSON válido. Isso pode ser um objeto JSON, matriz, número, cadeia de caracteres ou um dos três valores literais (false, true, null)
ARRAY Testes para uma matriz JSON válida
OBJECT Testes para um objeto JSON válido
SCALAR Testes para um escalar JSON válido – número ou cadeia de caracteres

O valor SCALAR json_type_constraint pode ser usado para testar o documento JSON compatível com IETF RFC 8259 que contém apenas um valor escalar JSON no nível superior. Um documento JSON que não contém um valor escalar JSON no nível superior está em conformidade com o IETF RFC 4627.

Não retorna erros.

Comentários

ISJSON não verifica a exclusividade das chaves no mesmo nível.

Exemplos

Exemplo 1

O exemplo a seguir executará um bloco de instruções condicionalmente se o valor do parâmetro @param contiver um JSON válido.

DECLARE @param <data type>
SET @param = <value>

IF (ISJSON(@param) > 0)  
BEGIN  
     -- Do something with the valid JSON value of @param.  
END

Exemplo 2

O exemplo a seguir retorna linhas em que a coluna json_col contém um JSON válido.

SELECT id, json_col
FROM tab1
WHERE ISJSON(json_col) = 1 

Exemplo 3

O exemplo a seguir retorna linhas em que a coluna json_col contém um valor SCALAR JSON válido no nível superior.

SELECT id, json_col
FROM tab1
WHERE ISJSON(json_col, SCALAR) = 1 

Exemplo 4

O exemplo a seguir retorna 1, já que a entrada é um valor JSON válido – true.

SELECT ISJSON('true', VALUE)

Exemplo 5

O exemplo a seguir retorna 0, já que a entrada é um valor JSON inválido.

SELECT ISJSON('test string', VALUE)

Exemplo 6

O exemplo a seguir retorna 1, já que a entrada é um valor scalar JSON válido de acordo com RFC 8259.

SELECT ISJSON('"test string"', SCALAR)