次の方法で共有


ISJSON (Transact-SQL)

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

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

Transact-SQL 構文表記規則

Syntax

ISJSON ( expression [, json_type_constraint] )  

Arguments

expression

テストする文字列。

json_type_constraint

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

Note

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

Return value

文字列に有効な 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 スカラー (数値または文字列) をテストします

json_type_constraint値 SCALAR を使用して、最上位レベルの JSON スカラー値のみを含む IETF RFC 8259 準拠 JSON ドキュメントをテストできます。 最上位レベルの JSON スカラー値を含んでいない JSON ドキュメントは、IETF RFC 4627 に準拠しています。

エラーは返されません。

Remarks

ISJSON は、同じレベルのキーの一意性をチェックしません。

Examples

Example 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

Example 2

次の例は、列 json_col に有効な JSON が含まれている行を返します。

SELECT id, json_col
FROM tab1
WHERE ISJSON(json_col) = 1 

Example 3

次の例は、列 json_col に最上位の有効な JSON SCALAR 値が含まれている行を返します。

SELECT id, json_col
FROM tab1
WHERE ISJSON(json_col, SCALAR) = 1 

Example 4

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

SELECT ISJSON('true', VALUE)

Example 5

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

SELECT ISJSON('test string', VALUE)

Example 6

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

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