Quando si utilizza SQL Server, è possibile utilizzare ISJSON()
funzione per verificare se un'espressione stringa contiene o meno un JSON valido.
Se l'espressione contiene JSON valido, ISJSON()
restituisce 1
, altrimenti restituisce 0
.
Sintassi
La sintassi è questa:
ISJSON ( expression )
Dove expression
è l'espressione stringa per la quale stai testando un JSON valido.
Esempio 1:JSON valido
Ecco un esempio per dimostrare cosa succede quando la stringa contiene un codice JSON valido.
SELECT ISJSON('{"Name": "Bob"}') AS Result;
Risultato:
+----------+ | Result | |----------| | 1 | +----------+
Esempio 2:JSON non valido
Ecco un esempio per dimostrare cosa succede quando la stringa non contengono JSON valido.
SELECT ISJSON('Name: Bob') AS Result;
Risultato:
+----------+ | Result | |----------| | 0 | +----------+
Esempio 3 – Una dichiarazione condizionale
Ecco un'istruzione condizionale di base che restituisce un risultato diverso, a seconda che la stringa contenga o meno JSON.
DECLARE @data nvarchar(255); SET @data = '{"Name": "Bob"}'; IF (ISJSON(@data) > 0) SELECT 'Valid JSON' AS 'Result'; ELSE SELECT 'Invalid JSON' AS 'Result';
Risultato:
+------------+ | Result | |------------| | Valid JSON | +------------+
Esempio 4:un esempio di database
In questa query del database, i risultati vengono restituiti solo dove Collections.Contents
la colonna contiene JSON valido.
Questa particolare colonna utilizza un tipo di dati di nvarchar(4000)
per memorizzare il documento JSON.
SELECT Contents FROM Collections WHERE ISJSON(Contents) > 0;
Risultato:
+------------+ | 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" } ] } ] | +------------+