ISJSON (Transact-SQL)
適用於:SQL Server 2016 (13.x) 和更新版本 Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics Microsoft Fabric 中的 SQL 分析端點 Microsoft Fabric 中的倉儲
測試字串是否包含有效的 JSON。
語法
ISJSON ( expression [, json_type_constraint] )
引數
expression
要測試的字串。
json_type_constraint
指定要簽入輸入的 JSON 類型。 有效值為 VALUE
、ARRAY
、OBJECT
或 SCALAR
。 在 SQL Server 2022 (16.x) 中引進。
注意
Azure Synapse Analytics 專用集區不支援引數 json_type_constraint
傳回值
若字串包含有效的 JSON,則傳回 1
;否則傳回 0
。 若 expression 為 null,則傳回 NULL
。
如果陳述式省略 json_type_constraint,則函數會測試輸入是否為有效的 JSON 物件或陣列,並傳回 1
,否則會傳回 0
。
如果指定 json_type_constraint,則函式會檢查 JSON 類型,如下所示:
值 | 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。
不會傳回錯誤。
備註
ISJSON
不會檢查相同層級中索引鍵的唯一性。
範例
範例 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)