JSON関数
JSON関数を使用してJSONデータ型のデータを操作できます。
JSON値を作成する関数
JSON値を検索する関数
| 関数名 | 説明 | 
|---|
| JSON_CONTAINS() | 指定された候補JSONドキュメントがターゲットJSONドキュメント内に含まれているかどうかを1または0を返すことで示します。 | 
| JSON_CONTAINS_PATH() | JSONドキュメントに指定されたパスのデータが含まれているかどうかを示す0または1を返します。 | 
| JSON_EXTRACT() | path引数に一致するドキュメントの部分から選択されたJSONドキュメントからデータを返します。 | 
| -> | 評価パスの後のJSON列から値を返します。1の別名ですJSON_EXTRACT(doc, path_literal) | 
| ->> | 評価パスの後のJSON列から値を返し、結果を引用符で囲まないJSON_UNQUOTE(JSON_EXTRACT(doc, path_literal))の別名。 | 
| JSON_KEYS() | JSONオブジェクトの最上位レベルの値からキーをJSON配列として返します。パス引数が指定されている場合は、選択したパスから最上位レベルのキーを返します。 | 
| JSON_SEARCH() | JSONドキュメントで文字列の1つまたはすべてに一致するものを検索する | 
| メンバー() | 渡された値が JSON 配列の要素である場合は 1 を返します。それ以外の場合は 0 を返します。 | 
| JSON_OVERLAPS() | 2つのJSONドキュメントに重複部分があるかどうかを示します。重複している場合は1を、重複していない場合は0を返します。 | 
JSON値を変更する関数
JSON値属性を返す関数
ユーティリティ関数
集計関数
検証関数
JSONパス
多くの JSON関数は、 JSONパス使用して JSON ドキュメントの一部を選択します。
| シンボル | 説明 | 
|---|
$ | ドキュメントルート | 
. | メンバーの選択 | 
[] | 配列の選択 | 
* | ワイルドカード | 
** | パスワイルドカード | 
[<n> to <n>] | 配列範囲の選択 | 
以降のコンテンツでは、次の JSON ドキュメントを例として、JSONPath の使用方法を説明します。
{
    "database": {
        "name": "TiDB",
        "features": [
            "distributed",
            "scalable",
            "relational",
            "cloud native"
        ],
        "license": "Apache-2.0 license",
        "versions": [
            {
                "version": "v8.1.0",
                "type": "lts",
                "release_date": "2024-05-24" 
            },
            {
                "version": "v8.0.0",        
                "type": "dmr",
                "release_date": "2024-03-29"
            }
        ]
    },
    "migration_tool": {
        "name": "TiDB Data Migration",
        "features": [
            "MySQL compatible",            
            "Shard merging"
        ],
        "license": "Apache-2.0 license"
    }
}
| JSONパス | 説明 | 例JSON_EXTRACT() | 
|---|
$ | 文書のルート | 完全な文書を返します | 
$.database | databaseオブジェクト | "database"から始まる完全な構造を返します。3 "migration_tool"それ以下の構造は含まれません。 | 
$.database.name | データベースの名前。 | "TiDB" | 
$.database.features | すべてのデータベース機能 | ["distributed", "scalable", "relational", "cloud native"] | 
$.database.features[0] | 最初のデータベース機能。 | "distributed" | 
$.database.features[2] | 3番目のデータベース機能。 | "relational" | 
$.database.versions[0].type | 最初のデータベース バージョンのタイプ。 | "lts" | 
$.database.versions[*].release_date | すべてのバージョンのリリース日。 | ["2024-05-24","2024-03-29"] | 
$.*.features | 2つの機能の配列 | [["distributed", "scalable", "relational", "cloud native"], ["MySQL compatible", "Shard merging"]] | 
$**.version | パスワイルドカードを使用したすべてのバージョン | ["v8.1.0","v8.0.0"] | 
$.database.features[0 to 2] | 1 番目から 3 番目までのデータベース機能の範囲。 | ["scalable","relational"] | 
詳細についてはJSONPathのIETFドラフト参照してください。
参照
サポートされていない関数
JSON_SCHEMA_VALIDATION_REPORT()JSON_TABLE()JSON_VALUE()
詳細については#14486参照してください。
MySQLの互換性
- TiDB は、MySQL 8.0 で利用可能なJSON関数ほとんどをサポートしています。