適用於: SQL Server 2016 (13.x) 及以後版本
Azure SQL Database Azure
SQL Managed Instance
Azure Synapse Analytics
SQL Analytics endpoint in Microsoft Fabric
Warehouse in Microsoft Fabric
SQL database in Microsoft Fabric
語法 ISJSON 會測試字串是否包含有效的 JSON。
Syntax
ISJSON ( expression [, json_type_constraint] )
Arguments
expression
要測試的字串。
json_type_constraint
指定要簽入輸入的 JSON 類型。 有效值為 VALUE、ARRAY、OBJECT 或 SCALAR。 在 SQL Server 2022 (16.x) 中引進。
Note
Azure Synapse Analytics 專用集區不支援自變數json_type_constraint
返回值
若字串包含有效的 JSON,則傳回 1;否則傳回 0。 如果 NULL 為 null,則傳回 。
如果語句省略json_type_constraint,函式會測試輸入是否為有效的 JSON 物件或陣列,否則會傳1回 0 。
如果指定 json_type_constraint ,則函式會檢查 JSON 類型,如下所示:
| Value | Description |
|---|---|
VALUE |
測試有效的 JSON 值。 這可以是 JSON 物件、陣列、數字、字串,或三個常值 (false、true、null) 的其中一個 |
ARRAY |
測試有效的 JSON 陣列 |
OBJECT |
測試有效的 JSON 物件 |
SCALAR |
測試有效的 JSON 純量 - 數字或字串 |
json_type_constraint值 SCALAR 可用來測試 IETF RFC 8259 一致性 JSON 檔,其中只包含最上層的 JSON 純量值。 不包含最上層 JSON 純量值的 JSON 文件符合 IETF RFC 4627。
不會傳回錯誤。
Remarks
ISJSON 不會檢查相同層級中索引鍵的唯一性。
Examples
範例 1
下列範例會在參數值 @param 包含有效的 JSON 時條件式的執行陳述式區塊。
DECLARE @param <data type>
SET @param = <value>
IF (ISJSON(@param) > 0)
BEGIN
-- Do something with the valid JSON value of @param.
END
範例 2
下列範例會傳回資料行 json_col 中包含有效 JSON 的資料列。
SELECT id, json_col
FROM tab1
WHERE ISJSON(json_col) = 1
範例 3
下列範例會傳回其中資料行 json_col 包含最上層有效 JSON SCALAR 值的資料列。
SELECT id, json_col
FROM tab1
WHERE ISJSON(json_col, SCALAR) = 1
範例 4
下列範例會傳回 1,因為輸入是有效的 JSON 值 - true。
SELECT ISJSON('true', VALUE)
範例 5
下列範例會傳回 0,因為輸入是無效的 JSON 值。
SELECT ISJSON('test string', VALUE)
範例 6
下列範例會傳回 1,因為根據 RFC 8259,輸入是有效的 JSON 純量。
SELECT ISJSON('"test string"', SCALAR)