Wenn Sie SQL Server verwenden, können Sie ISJSON()
verwenden Funktion zum Testen, ob ein Zeichenfolgenausdruck gültiges JSON enthält.
Wenn der Ausdruck gültiges JSON enthält, ISJSON()
gibt 1
zurück , andernfalls wird 0
zurückgegeben .
Syntax
Die Syntax lautet wie folgt:
ISJSON ( expression )
Wobei expression
ist der Zeichenfolgenausdruck, für den Sie auf gültiges JSON testen.
Beispiel 1 – Gültige JSON
Hier ist ein Beispiel, um zu demonstrieren, was passiert, wenn die Zeichenfolge gültiges JSON enthält.
SELECT ISJSON('{"Name": "Bob"}') AS Result;
Ergebnis:
+----------+ | Result | |----------| | 1 | +----------+
Beispiel 2 – Ungültiges JSON
Hier ist ein Beispiel, um zu demonstrieren, was passiert, wenn die Zeichenfolge nicht tut gültiges JSON enthalten.
SELECT ISJSON('Name: Bob') AS Result;
Ergebnis:
+----------+ | Result | |----------| | 0 | +----------+
Beispiel 3 – Eine bedingte Anweisung
Hier ist eine grundlegende bedingte Anweisung, die ein anderes Ergebnis ausgibt, je nachdem, ob die Zeichenfolge JSON enthält oder nicht.
DECLARE @data nvarchar(255); SET @data = '{"Name": "Bob"}'; IF (ISJSON(@data) > 0) SELECT 'Valid JSON' AS 'Result'; ELSE SELECT 'Invalid JSON' AS 'Result';
Ergebnis:
+------------+ | Result | |------------| | Valid JSON | +------------+
Beispiel 4 – Ein Datenbankbeispiel
Bei dieser Datenbankabfrage werden die Ergebnisse nur dort zurückgegeben, wo Collections.Contents
Spalte enthält gültiges JSON.
Diese bestimmte Spalte verwendet einen Datentyp von nvarchar(4000)
zum Speichern des JSON-Dokuments.
SELECT Contents FROM Collections WHERE ISJSON(Contents) > 0;
Ergebnis:
+------------+ | Contents | |------------| | [ { "ArtistName": "AC/DC", "Albums": [ { "AlbumName": "Powerage" } ] }, { "ArtistName": "Devin Townsend", "Albums": [ { "AlbumName": "Ziltoid the Omniscient" }, { "AlbumName": "Casualties of Cool" }, { "AlbumName": "Epicloud" } ] }, { "ArtistName": "Iron Maiden", "Albums": [ { "AlbumName": "Powerslave" }, { "AlbumName": "Somewhere in Time" }, { "AlbumName": "Piece of Mind" }, { "AlbumName": "Killers" }, { "AlbumName": "No Prayer for the Dying" } ] } ] | +------------+