メインコンテンツまでスキップ
バージョン: 26.2 Preview

get_json_scalar

指定された JSON パスから JSON 文字列内のスカラー値を解析して取得し、VARCHAR 型として返します。

ヒント

すべての JSON 関数と Operator はナビゲーションと overview page に一覧されています。

クエリを 生成列 で高速化しましょう。

json_str または json_path の形式が無効である場合、または一致するコンテンツが見つからない場合、この関数は NULL を返します。json_path で特定された値が JSON オブジェクトまたは JSON 配列の場合も、この関数は NULL を返します。これは、この関数がスカラー値(数値、文字列、ブール値、JSON null)のみを返すためです。

構文

VARCHAR get_json_scalar(VARCHAR json_str, VARCHAR json_path)

パラメータ

  • json_str: JSON 文字列。サポートされているデータ型は VARCHAR です。

  • json_path: JSON パス。サポートされているデータ型は VARCHAR です。

    • json_path$ で始まり、. をパスの区切り文字として使用する必要があります。パスに . が含まれる場合は、" で囲むことができます。
    • [ ] は配列の添字として使用され、0 から始まります。

  1. キーが "k1" の値を取得します。値は数値 1 で、1 が返されます。

    MySQL > SELECT get_json_scalar('{"k1":1, "k2":"v2"}', "$.k1");
    +----------------------------------------------------+
    | get_json_scalar('{"k1":1, "k2":"v2"}', '$.k1') |
    +----------------------------------------------------+
    | 1 |
    +----------------------------------------------------+
  2. キーが "my.key" の配列の2番目の要素を取得します。2番目の要素は false で、false が返されます。

    MySQL > SELECT get_json_scalar('{"k1":"v1", "my.key":[true, false, 3]}', '$."my.key"[1]');
    +-----------------------------------------------------------------------------+
    | get_json_scalar('{"k1":"v1", "my.key":[true, false, 3]}', '$."my.key"[1]') |
    +-----------------------------------------------------------------------------+
    | false |
    +-----------------------------------------------------------------------------+
  3. パスが k1.key -> k2 の配列の最初の要素を取得します。最初の要素は false で、false が返されます。

    MySQL > SELECT get_json_scalar('{"k1.key":{"k2":[false, true]}}', '$."k1.key".k2[0]');
    +-------------------------------------------------------------------------+
    | get_json_scalar('{"k1.key":{"k2":[false, true]}}', '$."k1.key".k2[0]') |
    +-------------------------------------------------------------------------+
    | false |
    +-------------------------------------------------------------------------+
  4. キーが "k1" の値を取得しますが、この値はスカラー値ではなく JSON オブジェクトです。NULL が返されます。

    MySQL > SELECT get_json_scalar('{"k1":{"k11":"v11"}}', '$.k1');
    +----------------------------------------------------+
    | get_json_scalar('{"k1":{"k11":"v11"}}', '$.k1') |
    +----------------------------------------------------+
    | NULL |
    +----------------------------------------------------+

キーワード

GET_JSON_SCALAR,GET,JSON,SCALAR