Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

ISJSON()-Beispiele in SQL Server (T-SQL)

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"
            }
        ]
    }
]            |
+------------+