に最終更新
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関数を明示的に呼び出して解析してください。select JSON_ARRAY_IGNORE_NULL(JSON_PARSE('{"key": "value"}'));
例
-
通常のパラメータ
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"] |
+-------------+------+-----------+ -
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"] |
+------+---------------------+ -
サポートされないパラメータの型
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)>) -
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"}] |
+--------------------------------------------------------------+ -
json_parseで JSON 文字列を解析できます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]}] |
+------------------------------------------------------------------------------------------+