ISJSON (Transact-SQL)

適用対象: SQL Server 2016 (13.x) 以降 Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Microsoft Fabric の SQL 分析エンドポイント Microsoft Fabric のウェアハウス

文字列に有効な JSON が含まれているかどうかをテストします。

Transact-SQL 構文表記規則

構文

ISJSON ( expression [, json_type_constraint] )  

引数

式 (expression)

テストする文字列。

json_type_constraint

入力でチェックインする JSON の種類を指定します。 有効な値は VALUEARRAYOBJECT、または SCALAR です。 SQL Server 2022 (16.x) で導入されています。

注意

引数 json_type_constraint は Azure Synapse Analytics の専用プールではサポートされていません

戻り値

文字列に有効な JSON が含まれている場合は 1 を、それ以外の場合は 0 を返します。 が null の場合は NULL を返します。

ステートメントで json_type_constraint が省略された場合、関数は入力が有効な JSON オブジェクトまたは配列であるかどうかをテストし、そうであれば 1 を、そうでなければ 0 を返します。

json_type_constraint が指定されている場合、関数は JSON 型を次のようにチェックします。

説明
VALUE 有効な JSON 値をテストします。 これは、JSON オブジェクト、配列、数値、文字列、または 3 つのリテラル値 (false、true、null) のいずれかである可能性があります
ARRAY 有効な JSON 配列をテストします
OBJECT 有効な JSON オブジェクトをテストします
SCALAR 有効な JSON スカラー (数値または文字列) をテストします

json_type_constraint 値 SCALAR は、最上位レベルの JSON スカラー値のみを含んだ IETF RFC 8259 準拠の 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

次の例では、入力が有効な JSON 値 (true) であるため、1 が返されます。

SELECT ISJSON('true', VALUE)

例 5

次の例では、入力が無効な JSON 値であるため、0 が返されます。

SELECT ISJSON('test string', VALUE)

例 6

次の例では、入力が RFC 8259 に準拠した有効な JSON スカラーであるため、1 が返されます。

SELECT ISJSON('"test string"', SCALAR)