ISJSON (Transact-SQL)

適用於: SQL Server 2016 (13.x) 及以後版本 Azure SQL Database AzureSQL Managed InstanceAzure Synapse AnalyticsSQL Analytics endpoint in Microsoft FabricWarehouse in Microsoft FabricSQL database in Microsoft Fabric

語法 ISJSON 會測試字串是否包含有效的 JSON。

Transact-SQL 語法慣例

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 純量 - 數字或字串

SCALAR這個值測試的是僅包含頂層 JSON 標量值的 JSON 文件。 IETF RFC 8259 允許頂層使用任意 JSON 值,因此請測試 VALUE 符合 IETF RFC 8259 標準的 JSON 文件。 IETF RFC 4627 僅允許頂層的 JSON 物件或陣列。

不會傳回錯誤。

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)