Khi sử dụng SQL Server, bạn có thể sử dụng ISJSON()
để kiểm tra xem một biểu thức chuỗi có chứa JSON hợp lệ hay không.
Nếu biểu thức chứa JSON hợp lệ, ISJSON()
trả về 1
, nếu không nó trả về 0
.
Cú pháp
Cú pháp như sau:
ISJSON ( expression )
Ở đâu expression
là biểu thức chuỗi mà bạn đang kiểm tra JSON hợp lệ.
Ví dụ 1 - JSON hợp lệ
Dưới đây là một ví dụ để chứng minh điều gì sẽ xảy ra khi chuỗi chứa JSON hợp lệ.
SELECT ISJSON('{"Name": "Bob"}') AS Result;
Kết quả:
+----------+ | Result | |----------| | 1 | +----------+
Ví dụ 2 - JSON không hợp lệ
Dưới đây là một ví dụ để chứng minh điều gì sẽ xảy ra khi chuỗi doesn’t chứa JSON hợp lệ.
SELECT ISJSON('Name: Bob') AS Result;
Kết quả:
+----------+ | Result | |----------| | 0 | +----------+
Ví dụ 3 - Câu lệnh có điều kiện
Đây là một câu lệnh điều kiện cơ bản tạo ra một kết quả khác, tùy thuộc vào việc chuỗi có chứa JSON hay không.
DECLARE @data nvarchar(255); SET @data = '{"Name": "Bob"}'; IF (ISJSON(@data) > 0) SELECT 'Valid JSON' AS 'Result'; ELSE SELECT 'Invalid JSON' AS 'Result';
Kết quả:
+------------+ | Result | |------------| | Valid JSON | +------------+
Ví dụ 4 - Ví dụ về Cơ sở dữ liệu
Trong truy vấn cơ sở dữ liệu này, kết quả chỉ được trả về khi Collections.Contents
cột chứa JSON hợp lệ.
Cột cụ thể này sử dụng kiểu dữ liệu là nvarchar(4000)
để lưu trữ tài liệu JSON.
SELECT Contents FROM Collections WHERE ISJSON(Contents) > 0;
Kết quả:
+------------+ | 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" } ] } ] | +------------+