Partager via


ISJSON (Transact-SQL)

S’applique à : SQL Server 2016 (13.x) et versions ultérieures Base de données Azure SQL Azure SQL Managed Instance Azure Synapse Analytics SQL analytics endpoint dans Microsoft Fabric Warehouse dans Microsoft Fabric

Teste si une chaîne contient des données JSON valides.

Conventions de la syntaxe Transact-SQL

Syntaxe

ISJSON ( expression [, json_type_constraint] )  

Arguments

expression

Chaîne à tester.

json_type_constraint

Spécifie le type JSON à vérifier dans l’entrée. Les valeurs valides sont VALUE, ARRAY, OBJECT ou SCALAR. Introduite dans SQL Server 2022 (16.x).

Remarque

L’argument json_type_constraint n’est pas pris en charge dans les pools dédiés Azure Synapse Analytics

Valeur retournée

Renvoie 1 si la chaîne contient des données JSON valides ; sinon, renvoie 0. Renvoie NULL si expression est null.

Si l’instruction omet json_type_constraint, la fonction teste si l’entrée est un objet JSON ou un tableau valide et retourne 1 sinon, elle retourne 0.

Si json_type_constraint est spécifié, la fonction vérifie le type JSON comme suit :

Valeur Description
VALUE Teste une valeur JSON valide. Il peut s’agir d’un objet, d’un tableau, d’un numéro, d’une chaîne JSON ou d’une des trois valeurs littérales (false, true, null)
ARRAY Teste un tableau JSON valide
OBJECT Teste un objet JSON valide
SCALAR Teste un scalaire JSON valide – numéro ou chaîne

La valeur SCALAR json_type_constraint peut être utilisée pour tester le document JSON conforme RFC 8259 IETF qui contient uniquement une valeur scalaire JSON au niveau supérieur. Un document JSON qui ne contient pas de valeur scalaire JSON au niveau supérieur conforme à IETF RFC 4627.

Ne renvoie pas d’erreurs.

Notes

ISJSON ne vérifie pas l’unicité des clés au même niveau.

Exemples

Exemple 1

L’exemple suivant exécute un bloc d’instructions de manière conditionnelle si la valeur de paramètre @param contient des données JSON valides.

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

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

Exemple 2

L’exemple suivant retourne des lignes dans lesquelles la colonne json_col contient un JSON valide.

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

Exemple 3

L’exemple suivant retourne des lignes dans lesquelles la colonne json_col contient une valeur SCALAR JSON valide au niveau supérieur.

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

Exemple 4

L’exemple suivant retourne 1, car l’entrée est une valeur JSON valide - true.

SELECT ISJSON('true', VALUE)

Exemple 5

L’exemple suivant retourne 0, car l’entrée est une valeur JSON non valide.

SELECT ISJSON('test string', VALUE)

Exemple 6

L’exemple suivant retourne 1, car l’entrée est une valeur scalaire JSON valide, conformément au RFC 8259.

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