Condividi tramite


ISJSON (Transact-SQL)

Si applica a: SQL Server 2016 (13.x) e versioni successive database SQL di Azure Istanza gestita di SQL di Azure endpoint di analisi SQL di Azure Synapse Analytics in Microsoft Fabric Warehouse in Microsoft Fabric

Verifica se una stringa include contenuto JSON valido.

Convenzioni relative alla sintassi Transact-SQL

Sintassi

ISJSON ( expression [, json_type_constraint] )  

Argomenti

expression

Stringa da testare.

json_type_constraint

Specifica il tipo JSON da controllare nell'input. I valori validi sono VALUE, ARRAY, OBJECT, o SCALAR. Introdotto in SQL Server 2022 (16.x)

Nota

L'argomento json_type_constraint non è supportato in nei pool dedicati Azure Synapse Analytics

Valore restituito

Restituisce 1 se la stringa include contenuto JSON valido. In caso contrario, restituisce 0. Restituisce NULL se expression è null.

Se l'istruzione omette json_type_constraint, la funzione verifica se l'input è una matrice o un oggetto JSON valido e restituisce 1; in caso contrario restituisce 0.

Se invece json_type_constraint viene specificato, la funzione verifica il tipo JSON come indicato di seguito:

Valore Descrizione
VALUE Verifica un valore JSON valido. Può essere un oggetto o una matrice JSON, un numero, una stringa o uno dei tre valori letterali: false, true, null
ARRAY Verifica una matrice JSON valida
OBJECT Verifica un oggetto JSON valido
SCALAR Verifica un operatore scalare JSON valido: numero o stringa

Il valore SCALAR json_type_constraint può essere usato per testare il documento JSON conforme a AETF RFC 8259, che contiene solo un valore scalare JSON a livello superiore. Un documento JSON che non contiene un valore scalare JSON a livello superiore è conforme a IETF RFC 4627.

Non restituisce errori.

Osservazioni:

ISJSON non controlla l'univocità delle chiavi allo stesso livello.

Esempi

Esempio 1

L'esempio seguente esegue un blocco di istruzioni in modo condizionale se il valore del parametro @param include contenuto JSON valido.

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

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

Esempio 2

L'esempio seguente restituisce le righe in cui la colonna json_col include contenuto JSON valido.

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

Esempio 3

L'esempio seguente restituisce le righe in cui la colonna json_col include un valore JSON SCALAR a livello superiore.

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

Esempio 4

L'esempio seguente restituisce 1 poiché l'input è un valore JSON valido - true.

SELECT ISJSON('true', VALUE)

Esempio 5

L'esempio seguente restituisce 0 poiché l'input è un valore JSON non valido.

SELECT ISJSON('test string', VALUE)

Esempio 6

L'esempio seguente restituisce 1 poiché l'input è un valore JSON valido in base a RFC 8259.

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