ISJSON (Transact-SQL)
適用対象: SQL Server 2016 (13.x) 以降 Azure SQL Database Azure SQL Managed Instance 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) で導入されています。
注意
引数 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)