ISJSON (Transact-SQL)

適用対象:Sql Server 2016 (13.x) 以降のバージョンAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsMicrosoft Fabric の AzureSQL 分析エンドポイントMicrosoft Fabric のウェアハウスMicrosoft Fabric のSQL データベース

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

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

戻り値

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

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

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

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

SCALAR valueは、最上位に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

次の例では、入力が有効な 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)