JSON オブジェクトまたは JSON 配列から、値が null のすべてのフィールドまたは要素を削除します。
構文
JSON JSON_STRIP_NULLS(
JSON <json_expr>
[, BOOLEAN <include_arrays> ]
[, BOOLEAN <remove_empty> ]
[, STRING <json_path> ]
)パラメーター
パラメーター | 必須 | 説明 |
json_expr | はい | JSON 型。 JSON オブジェクトまたは JSON 配列。 詳細については、「JSON データ型」をご参照ください。 |
include_arrays | いいえ | BOOLEAN 型。 JSON 配列から JSON null 値を削除するかどうかを指定します。 有効な値:
|
remove_empty | いいえ | BOOLEAN 型。 JSON null 値が削除された後、空の JSON オブジェクトを削除するかどうかを指定します。 有効な値:
説明 remove_empty の値が |
json_path | いいえ | STRING 型。 json_expr について、この関数は json_path で指定されたパスにある JSON null 値を削除します。 説明 json_path パラメーターを使用する場合、4 つの入力パラメーターを指定する必要があり、json_path は 4 番目の入力パラメーターである必要があります。 |
戻り値
JSON 型の値を返します。 以下のルールが適用されます。
JSON オブジェクトのフィールドに null 値がある場合、関連付けられたキーと値のペアは削除されます。
結果の JSON オブジェクトまたは配列が空の場合、関数は JSON null を返します。
json_path が NULL または無効な場合、json_expr が返されます。
json_expr、include_arrays、または remove_empty が NULL の場合、NULL が返されます。
例
例 1: JSON オブジェクトと JSON 配列から null 値を削除します。
SELECT JSON_STRIP_NULLS(NULL) AS json_data1, JSON_STRIP_NULLS(JSON 'null') AS json_data2, JSON_STRIP_NULLS(JSON '[1, null, 2, null]') AS json_data3, JSON_STRIP_NULLS(JSON '[1, null, 2, null]', FALSE) AS json_data4, JSON_STRIP_NULLS(JSON '[1, null, 2, null, [null]]',TRUE,TRUE) AS json_data5, JSON_STRIP_NULLS(JSON '[1, null, 2, null, [null]]',NULL,TRUE) AS json_data6, JSON_STRIP_NULLS( JSON '{"a": {"b": {"c": null}}, "d": [null], "e": [], "f": 1}', FALSE,TRUE) AS json_data7, JSON_STRIP_NULLS( JSON '{"a": {"b": {"c": null}}, "d": [null], "e": [], "f": 1}', TRUE,TRUE) AS json_data8;次の結果が返されます。
+------------+------------+------------+-----------------+------------+------------+---------------------------+------------+ | json_data1 | json_data2 | json_data3 | json_data4 | json_data5 | json_data6 | json_data7 | json_data8 | +------------+------------+------------+-----------------+------------+------------+---------------------------+------------+ | NULL | null | [1,2] | [1,null,2,null] | [1,2] | NULL | {"d":[null],"e":[],"f":1} | {"f":1} | +------------+------------+------------+-----------------+------------+------------+---------------------------+------------+例 2: 指定された JSON パスで空のオブジェクトを削除します。
SELECT JSON_STRIP_NULLS( JSON '{ "person": { "name": "Alice", "address": { "street": null, "city": "New York", "zip": null }, "phone": null }, "company": { "name": "Acme Corp", "location": null } }', true, true, '$.person.address' ) AS json_data;次の結果が返されます。
{"person":{"name":"Alice","phone":null,"address":{"city":"New York"}},"company":{"name":"Acme Corp","location":null}}例 3:
json_pathが無効な場合、関数は操作を実行せずにjson_exprを返します。SELECT JSON_STRIP_NULLS( JSON '{ "person": { "name": "Alice", "address": { "street": null, "city": "New York", "zip": null }, "phone": null }, "company": { "name": "Acme Corp", "location": null }, "uid":null }', true, true, '$person.a' ) AS json_data;次の結果が返されます。
{"uid":null,"person":{"name":"Alice","phone":null,"address":{"zip":null,"city":"New York","street":null}},"company":{"name":"Acme Corp","location":null}}
関連関数
JSON_STRIP_NULLS は JSON 関数です。 JSON 関数の詳細については、「JSON 関数」をご参照ください。