Condividi tramite


ISJSON (Transact-SQL)

Si applica a: SQL Server 2016 (13.x) e versioni successive di Istanza gestita di SQL diAzure Istanza gestita di SQL diAzure Azure Synapse Analyticsin Microsoft FabricWarehouse nel database SQL diMicrosoft Fabricin Microsoft Fabric

La ISJSON sintassi verifica se una stringa contiene codice JSON valido.

Convenzioni relative alla sintassi Transact-SQL

Syntax

ISJSON ( expression [, json_type_constraint] )  

Arguments

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)

Note

L'argomento json_type_constraint non è supportato nei pool dedicati di 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 è un oggetto JSON o una matrice valida e restituisce 1 in caso contrario, restituisce 0.

Se viene specificato il json_type_constraint , la funzione verifica la presenza del tipo JSON nel modo seguente:

Value Description
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 json_type_constraint SCALAR può essere usato per testare il documento JSON conforme a IETF RFC 8259 che contiene solo un valore scalare JSON al livello superiore. Un documento JSON che non contiene un valore scalare JSON a livello superiore è conforme a IETF RFC 4627.

Non restituisce errori.

Remarks

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

Examples

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 perché 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)