JSON関数
TiDB は、MySQL 8.0 で利用可能なJSON関数のほとんどをサポートしています。
JSON値を作成する関数
関数名 | 説明 |
---|---|
JSON_ARRAY([val[, val] ...]) | 値のリスト(空の場合もある)を評価し、それらの値を含むJSON配列を返します。 |
JSON_OBJECT(キー、値[、キー、値]...) | キーと値のペアの(空の場合もある)リストを評価し、それらのペアを含むJSONオブジェクトを返します。 |
JSON_QUOTE(文字列) | 引用符付きのJSON値として文字列を返します |
JSON値を検索する関数
関数名 | 説明 |
---|---|
JSON_CONTAINS(ターゲット、候補[、パス]) | 指定された候補JSONドキュメントがターゲットJSONドキュメント内に含まれているかどうかを1または0を返すことで示します。 |
JSON_CONTAINS_PATH(json_doc、one_or_all、パス[、パス]...) | JSONドキュメントに指定されたパスまたはパスにデータが含まれているかどうかを示す0または1を返します。 |
JSON_EXTRACT(json_doc, パス[, パス] ...) | path の引数に一致するドキュメントの部分から選択されたJSONドキュメントからデータを返します。 |
-> | 評価パスの後のJSON列から値を返します。1 JSON_EXTRACT(doc, path_literal) 別名です。 |
->> | 評価パスの後のJSON列からの値と、その結果の引用符を外した値を返します。1の別名ですJSON_UNQUOTE(JSON_EXTRACT(doc, path_literal)) |
JSON_KEYS(json_doc[, パス]) | JSONオブジェクトの最上位レベルの値からキーをJSON配列として返します。パス引数が指定されている場合は、選択したパスから最上位レベルのキーを返します。 |
JSON_SEARCH(json_doc、one_or_all、search_str[、escape_char[、path] ...]) | JSONドキュメントで文字列の1つまたはすべてに一致するものを検索する |
値 MEMBER OF(json_array) | 渡された値が JSON 配列の要素である場合は 1 を返します。それ以外の場合は 0 を返します。 |
JSON_OVERLAPS(json_doc1、json_doc2) は、 | 2 つの JSON ドキュメントに重複部分があるかどうかを示します。重複している場合は 1 を返します。重複していない場合は 0 を返します。 |
JSON値を変更する関数
関数名 | 説明 |
---|---|
JSON_APPEND(json_doc、パス、値) | JSON_ARRAY_APPEND の別名 |
JSON_ARRAY_APPEND(json_doc、パス、val[、パス、val]...) | JSONドキュメント内の指定された配列の末尾に値を追加し、結果を返します。 |
JSON_ARRAY_INSERT(json_doc、パス、val[、パス、val]...) | JSONドキュメントの指定された場所に値を挿入し、結果を返します。 |
JSON_INSERT(json_doc、パス、val[、パス、val]...) | JSONドキュメントにデータを挿入し、結果を返します |
JSON_MERGE_PATCH(json_doc、json_doc[、json_doc]...) | JSONドキュメントをマージする |
JSON_MERGE_PRESERVE(json_doc、json_doc[、json_doc]...) | 2つ以上のJSONドキュメントを結合し、結合された結果を返します。 |
JSON_MERGE(json_doc、json_doc[、json_doc]...) | JSON_MERGE_PRESERVE の非推奨のエイリアス |
JSON_REMOVE(json_doc, パス[, パス] ...) | JSONドキュメントからデータを削除し、結果を返します |
JSON_REPLACE(json_doc, パス, val[, パス, val] ...) | JSONドキュメント内の既存の値を置き換え、結果を返します |
JSON_SET(json_doc、パス、val[、パス、val]...) | JSONドキュメントにデータを挿入または更新し、結果を返します。 |
JSON_UNQUOTE(json_val) | JSON値を引用符で囲まず、結果を文字列として返します。 |
JSON値属性を返す関数
関数名 | 説明 |
---|---|
JSON_DEPTH(json_doc) | JSONドキュメントの最大深度を返します |
JSON_LENGTH(json_doc[, パス]) | JSONドキュメントの長さを返します。パス引数が指定されている場合は、パス内の値の長さを返します。 |
JSON_TYPE(json_val) | JSON値の型を示す文字列を返します |
JSON_VALID(json_doc) | json_doc が有効な JSON であるかどうかを確認します。列を json 型に変換する前にチェックするのに役立ちます。 |
ユーティリティ関数
関数名 | 説明 |
---|---|
JSON_PRETTY(json_doc) | JSONドキュメントのきれいなフォーマット |
JSON_STORAGE_FREE(json_doc) | JSON 値のバイナリ表現が更新された後に解放されたstorage容量を返します。TiDB は MySQL とは異なるstorageアーキテクチャを持っているため、この関数は有効な JSON 値に対して常に 0 を返し、MySQL 8.0 との互換性のために実装されています。 |
JSON_STORAGE_SIZE(json_doc) | json 値を格納するために必要なバイトのおおよそのサイズを返します。サイズは圧縮を使用する TiKV を考慮していないため、この関数の出力は MySQL と厳密には互換性がありません。 |
集計関数
関数名 | 説明 |
---|---|
JSON_ARRAYAGG(キー) | キーの集約を提供します。 |
JSON_OBJECTAGG(キー、値) | 指定されたキーの値の集計を提供します。 |
参照
サポートされていない関数
JSON_SCHEMA_VALID()
JSON_SCHEMA_VALIDATION_REPORT()
JSON_TABLE()
JSON_VALUE()
詳細については#14486参照してください。