このページは機械翻訳したものです。
このセクションの関数は、JSON 値の属性を戻します。
JSON_DEPTH(json_doc)JSON ドキュメントの最大深度を返します。 引数が
NULLの場合、NULLを返します。 引数が有効な JSON ドキュメントでない場合は、エラーが発生します。空の配列、空のオブジェクトまたはスカラー値の深さは 1 です。 深さ 1 の要素のみを含む空でない配列、または深さ 1 のメンバー値のみを含む空でないオブジェクトは深さ 2 です。 それ以外の場合、JSON ドキュメントの深さは 2 より大きくなります。
mysql> SELECT JSON_DEPTH('{}'), JSON_DEPTH('[]'), JSON_DEPTH('true');+------------------+------------------+--------------------+| JSON_DEPTH('{}') | JSON_DEPTH('[]') | JSON_DEPTH('true') |+------------------+------------------+--------------------+| 1 | 1 | 1 |+------------------+------------------+--------------------+mysql> SELECT JSON_DEPTH('[10, 20]'), JSON_DEPTH('[[], {}]');+------------------------+------------------------+| JSON_DEPTH('[10, 20]') | JSON_DEPTH('[[], {}]') |+------------------------+------------------------+| 2 | 2 |+------------------------+------------------------+mysql> SELECT JSON_DEPTH('[10, {"a": 20}]');+-------------------------------+| JSON_DEPTH('[10, {"a": 20}]') |+-------------------------------+| 3 |+-------------------------------+JSON_LENGTH(json_doc[,path])JSON ドキュメントの長さを戻します。
path引数が指定されている場合は、パスで識別されるドキュメント内の値の長さを戻します。 いずれかの引数がNULLの場合、またはpath引数がドキュメント内の値を識別しない場合、NULLを返します。json_doc引数が有効な JSON ドキュメントでないか、path引数が有効なパス式でないか、*または**ワイルドカードが含まれている場合、エラーが発生します。ドキュメントの長さは次のように決定されます:
スカラーの長さは 1 です。
配列の長さは配列要素の数です。
オブジェクトの長さは、オブジェクトメンバーの数です。
長さは、ネストされた配列またはオブジェクトの長さをカウントしません。
mysql> SELECT JSON_LENGTH('[1, 2, {"a": 3}]');+---------------------------------+| JSON_LENGTH('[1, 2, {"a": 3}]') |+---------------------------------+| 3 |+---------------------------------+mysql> SELECT JSON_LENGTH('{"a": 1, "b": {"c": 30}}');+-----------------------------------------+| JSON_LENGTH('{"a": 1, "b": {"c": 30}}') |+-----------------------------------------+| 2 |+-----------------------------------------+mysql> SELECT JSON_LENGTH('{"a": 1, "b": {"c": 30}}', '$.b');+------------------------------------------------+| JSON_LENGTH('{"a": 1, "b": {"c": 30}}', '$.b') |+------------------------------------------------+| 1 |+------------------------------------------------+JSON_TYPE(json_val)JSON 値のタイプを示す
utf8mb4文字列を返します。 次に示すように、オブジェクト型、配列型またはスカラー型を指定できます:mysql> SET @j = '{"a": [10, true]}';mysql> SELECT JSON_TYPE(@j);+---------------+| JSON_TYPE(@j) |+---------------+| OBJECT |+---------------+mysql> SELECT JSON_TYPE(JSON_EXTRACT(@j, '$.a'));+------------------------------------+| JSON_TYPE(JSON_EXTRACT(@j, '$.a')) |+------------------------------------+| ARRAY |+------------------------------------+mysql> SELECT JSON_TYPE(JSON_EXTRACT(@j, '$.a[0]'));+---------------------------------------+| JSON_TYPE(JSON_EXTRACT(@j, '$.a[0]')) |+---------------------------------------+| INTEGER |+---------------------------------------+mysql> SELECT JSON_TYPE(JSON_EXTRACT(@j, '$.a[1]'));+---------------------------------------+| JSON_TYPE(JSON_EXTRACT(@j, '$.a[1]')) |+---------------------------------------+| BOOLEAN |+---------------------------------------+引数が
NULLの場合、JSON_TYPE()はNULLを返します:mysql> SELECT JSON_TYPE(NULL);+-----------------+| JSON_TYPE(NULL) |+-----------------+| NULL |+-----------------+引数が有効な JSON 値でない場合は、エラーが発生します:
mysql> SELECT JSON_TYPE(1);ERROR 3146 (22032): Invalid data type for JSON data in argument 1to function json_type; a JSON string or JSON type is required.NULL以外のエラー以外の結果の場合、次のリストに、考えられるJSON_TYPE()の戻り値を示します:純粋な JSON 型:
OBJECT: JSON オブジェクトARRAY: JSON 配列BOOLEAN: JSON true および false リテラルNULL: JSON null リテラル
数値型:
INTEGER: MySQLTINYINT,SMALLINT,MEDIUMINTおよびINTとBIGINTのスカラーDOUBLE: MySQLDOUBLEFLOATスカラーDECIMAL: MySQLDECIMALおよびNUMERICスカラー
時間型:
DATETIME: MySQLDATETIMEおよびTIMESTAMPスカラーDATE: MySQLDATEスカラーTIME: MySQLTIMEスカラー
文字列型:
STRING: MySQLutf8文字型スカラー:CHAR,VARCHAR,TEXT,ENUMおよびSET
バイナリ型:
BLOB:BINARY,VARBINARY,BLOBおよびBITを含む MySQL バイナリ型スカラー
他のすべてのタイプ:
OPAQUE(raw ビット)
JSON_VALID(val)値が有効な JSON かどうかを示す 0 または 1 を返します。 引数が
NULLの場合、NULLを返します。mysql> SELECT JSON_VALID('{"a": 1}');+------------------------+| JSON_VALID('{"a": 1}') |+------------------------+| 1 |+------------------------+mysql> SELECT JSON_VALID('hello'), JSON_VALID('"hello"');+---------------------+-----------------------+| JSON_VALID('hello') | JSON_VALID('"hello"') |+---------------------+-----------------------+| 0 | 1 |+---------------------+-----------------------+