Когато използвате SQL Server, можете да използвате ISJSON()
функция за проверка дали низовият израз съдържа валиден JSON.
Ако изразът съдържа валиден JSON, ISJSON()
връща 1
, в противен случай връща 0
.
Синтаксис
Синтаксисът е така:
ISJSON ( expression )
Където expression
е низовият израз, за който тествате за валиден JSON.
Пример 1 – Валиден JSON
Ето пример, за да демонстрирате какво се случва, когато низът съдържа валиден JSON.
SELECT ISJSON('{"Name": "Bob"}') AS Result;
Резултат:
+----------+ | Result | |----------| | 1 | +----------+
Пример 2 – Невалиден JSON
Ето пример, за да демонстрирате какво се случва, когато низът не съдържа валиден JSON.
SELECT ISJSON('Name: Bob') AS Result;
Резултат:
+----------+ | Result | |----------| | 0 | +----------+
Пример 3 – Условно изявление
Ето основно условно изявление, което извежда различен резултат, в зависимост от това дали низът съдържа JSON или не.
DECLARE @data nvarchar(255); SET @data = '{"Name": "Bob"}'; IF (ISJSON(@data) > 0) SELECT 'Valid JSON' AS 'Result'; ELSE SELECT 'Invalid JSON' AS 'Result';
Резултат:
+------------+ | Result | |------------| | Valid JSON | +------------+
Пример 4 – Пример за база данни
В тази заявка за база данни резултатите се връщат само когато Collections.Contents
колоната съдържа валиден JSON.
Тази конкретна колона използва тип данни nvarchar(4000)
за да съхранявате JSON документа.
SELECT Contents FROM Collections WHERE ISJSON(Contents) > 0;
Резултат:
+------------+ | 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" } ] } ] | +------------+