共用方式為


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 類型。 有效值為 VALUEARRAYOBJECTSCALAR。 在 SQL Server 2022 (16.x) 中引進。

Note

Azure Synapse Analytics 專用集區不支援自變數json_type_constraint

返回值

若字串包含有效的 JSON,則傳回 1;否則傳回 0。 如果 NULL 為 null,則傳回 。

如果語句省略json_type_constraint,函式會測試輸入是否為有效的 JSON 物件或陣列,否則會傳10

如果指定 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)