メインコンテンツまでスキップ
バージョン: 26.x

JSON_ARRAY_IGNORE_NULL

説明

指定された要素を含むJSON配列を生成します。パラメータが渡されない場合は空の配列を返します。

構文

JSON_ARRAY_IGNORE_NULL([<expression>, ...]) 

パラメータ

可変パラメータ:

  • <expression>: JSON配列に含める要素。NULLを含む異なる型の単一または複数の値を指定できます。

戻り値

JSON: パラメータリストで構成されたJSON配列を返します。

使用上の注意

  • JSON_ARRAY_IGNORE_NULLの実装では、TO_JSON関数を暗黙的に呼び出すことで異なる型のパラメータをJSON値に変換するため、パラメータはTO_JSONでサポートされている型である必要があります。

  • NULLは無視されます。配列内でnull値を保持したい場合は、JSON_ARRAY関数を使用できます。

  • パラメータの型がTO_JSONでサポートされていない場合、エラーが発生します。まずそのパラメータをString型に変換することができます。例えば:

    select JSON_ARRAY_IGNORE_NULL(CAST(NOW() as String));

NOW()関数はDateTime型を返すため、CAST関数を使用してString型に変換する必要があります

  • パラメータがJSON文字列で、それをJSON オブジェクトとして配列に追加したい場合は、JSON_PARSE関数を明示的に呼び出してJSON オブジェクトとして解析する必要があります:

    select JSON_ARRAY_IGNORE_NULL(JSON_PARSE('{"key": "value"}'));

Examples

  1. 通常のパラメータ

    select json_array_ignore_null() as empty_array, json_array_ignore_null(1) v1, json_array_ignore_null(1, 'abc') v2;
    +-------------+------+-----------+
    | empty_array | v1 | v2 |
    +-------------+------+-----------+
    | [] | [1] | [1,"abc"] |
    +-------------+------+-----------+
  2. NULLパラメータ

    select json_array_ignore_null(null) v1, json_array_ignore_null(1, null, 'I am a string') v2;
    +------+---------------------+
    | v1 | v2 |
    +------+---------------------+
    | [] | [1,"I am a string"] |
    +------+---------------------+
  3. サポートされていないパラメータタイプ

    select json_array_ignore_null('item1', map(123, 'abc'));
    ERROR 1105 (HY000): errCode = 2, detailMessage = Can not find the compatibility function signature: to_json(MAP<TINYINT,VARCHAR(3)>)
  4. Mapタイプパラメータは明示的にJSONに変換できます

    select json_array_ignore_null(1, cast(map('key', 'value') as json));
    +--------------------------------------------------------------+
    | json_array_ignore_null(1, cast(map('key', 'value') as json)) |
    +--------------------------------------------------------------+
    | [1,{"key":"value"}] |
    +--------------------------------------------------------------+
  5. JSON文字列はjson_parseで解析できます

    select json_array_ignore_null(json_parse('{"key1": "value", "key2": [1, "I am a string", 3]}'));
    +------------------------------------------------------------------------------------------+
    | json_array_ignore_null(json_parse('{"key1": "value", "key2": [1, "I am a string", 3]}')) |
    +------------------------------------------------------------------------------------------+
    | [{"key1":"value","key2":[1,"I am a string",3]}] |
    +------------------------------------------------------------------------------------------+