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)