Partilhar via


ISJSON (Transact-SQL)

Aplica-se a: SQL Server 2016 (13.x) e versões posteriores Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSQL analytics endpoint in Microsoft FabricWarehouse em Microsoft FabricSQL database in Microsoft Fabric

A ISJSON sintaxe testa se uma cadeia de caracteres contém JSON válido.

Transact-SQL convenções de sintaxe

Syntax

ISJSON ( expression [, json_type_constraint] )  

Arguments

expression

A cadeia de caracteres a ser testada.

json_type_constraint

Especifica o tipo JSON para fazer check-in da entrada. Os valores válidos são VALUE, ARRAY, OBJECT, ou SCALAR. Introduzido no SQL Server 2022 (16.x).

Note

O argumento json_type_constraint não é suportado nos pools dedicados do Azure Synapse Analytics

Valor de retorno

Retorna 1 se a cadeia de caracteres contiver JSON válido; caso contrário, retorna 0. Retorna NULL se expression for null.

Se a instrução omitir json_type_constraint, a função testa se a entrada é um objeto JSON válido ou matriz e retorna 1 de outra forma, ela retorna 0.

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

Value Description
VALUE Testa um valor JSON válido. 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 de json_type_constraint SCALAR 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 IETF RFC 4627.

Não retorna erros.

Remarks

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

Examples

Exemplo 1

O exemplo a seguir executa um bloco de instrução condicionalmente se o valor @param do parâmetro contiver 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 nas quais a coluna json_col contém JSON válido.

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

Exemplo 3

O exemplo a seguir retorna linhas nas quais a coluna json_col contém um valor JSON SCALAR 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, pois a entrada é um valor JSON inválido.

SELECT ISJSON('test string', VALUE)

Exemplo 6

O exemplo a seguir retorna 1, pois a entrada é um escalar JSON válido de acordo com a RFC 8259.

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