ISJSON (Transact-SQL)

Gilt für: SQL Server 2016 (13.x) und höher Azure SQL-Datenbank Azure SQL verwaltete Instanz Azure Synapse Analytics SQL Analytics-Endpunkt in Microsoft Fabric Warehouse in Microsoft Fabric In Microsoft Fabric

Testet, ob eine Zeichenfolge gültiges JSON enthält.

Transact-SQL-Syntaxkonventionen

Syntax

ISJSON ( expression [, json_type_constraint] )  

Argumente

expression

Die zu testende Zeichenfolge.

json_type_constraint

Gibt den JSON-Typ an, der in der Eingabe überprüft werden soll. Gültige Werte sind VALUE, ARRAY, OBJECT oder SCALAR. Wurde in SQL Server 2022 (16.x) eingeführt.

Hinweis

Das Argument json_type_constraint wird in dedizierten Pools in Azure Synapse Analytics nicht unterstützt.

Rückgabewert

Gibt 1 zurück, wenn die Zeichenfolge gültiges JSON enthält. Andernfalls wird 0 zurückgegeben. Gibt NULL zurück, wenn der Ausdruck Null ist.

Wenn die Anweisung json_type_constraint, auslässt, testet die Funktion, ob die Eingabe ein gültiges JSON-Objekt oder Array ist und gibt 1 zurück, andernfalls 0.

Wenn json_type_constraint angegeben wird, sucht die Funktion wie folgt nach dem JSON-Typ:

Wert Beschreibung
VALUE Prüft auf einen gültigen JSON-Wert. Dies kann ein JSON-Objekt, ein Array, eine Zahl, eine Zeichenfolge oder einer der drei Literalwerte (FALSE, TRUE, NULL) sein.
ARRAY Prüft auf ein gültiges JSON-Array.
OBJECT Prüft auf ein gültiges JSON-Objekt.
SCALAR Prüft auf einen gültigen JSON-Skalar – Zahl oder Zeichenfolge.

Der json_type_constraint-Wert SCALAR kann verwendet werden, um auf IETF RFC 8259-konforme JSON-Dokumente zu testen, die nur einen JSON-Skalarwert auf oberster Ebene enthalten. Ein JSON-Dokument, das keinen JSON-Skalarwert auf oberster Ebene enthält, entspricht IETF RFC 4627.

Gibt keine Fehler zurück.

Hinweise

ISJSON überprüft nicht die Eindeutigkeit der Schlüssel auf derselben Ebene.

Beispiele

Beispiel 1

Im folgenden Beispiel wird ein Anweisungsblock bedingt ausgeführt, wenn der Parameterwert @param gültiges JSON enthält.

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

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

Beispiel 2

Im folgenden Beispiel werden die Spalten zurückgegeben, falls die Spalte json_col ein gültiges JSON enthält.

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

Beispiel 3

Im folgenden Beispiel werden Zeilen zurückgegeben, in denen die Spalte json_col einen gültigen JSON-SCALAR-Wert auf oberster Ebene enthält.

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

Beispiel 4

Im folgenden Beispiel wird 1 zurückgegeben, da es sich bei der Eingabe um einen gültigen JSON-Wert handelt: true.

SELECT ISJSON('true', VALUE)

Beispiel 5

Im folgenden Beispiel wird 0 zurückgegeben, da es sich bei der Eingabe um einen ungültigen JSON-Wert handelt.

SELECT ISJSON('test string', VALUE)

Beispiel 6

Im folgenden Beispiel wird 1 zurückgegeben, da es sich bei der Eingabe um einen gültigen JSON-Skalarwert gemäß RFC 8259 handelt.

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