SORT_JSON_OBJECT_KEYS
描述
SORT_JSON_OBJECT_KEYS
函数对 JSON 对象的键进行排序。该函数接受一个 JSON 对象作为输入,并返回一个新的 JSON 对象,其中键按字典顺序排序。
需要注意的是,根据 JSON 标准,JSON 对象是无序的集合。然而,此函数可以在需要确保键顺序一致时使用,例如在比较两个 JSON 对象是否包含相同内容时。
语法
SORT_JSON_OBJECT_KEYS(json_value)
别名
SORT_JSONB_OBJECT_KEYS
参数
json_value - 需要对键进行排序的 JSON 值。必须是 JSON 类型。
返回值
返回一个新的 JSON 对象,其中键按字典顺序排序。返回类型与输入的 JSON 类型相同。
当输入为 NULL 时,函数返回 NULL。
示例
基本键排序
SELECT sort_json_object_keys(cast('{"b":123,"b":456,"a":789}' as json));
+------------------------------------------------------------------+
| sort_json_object_keys(cast('{"b":123,"b":456,"a":789}' as json)) |
+------------------------------------------------------------------+
| {"a":789,"b":123} |
+------------------------------------------------------------------+
处理嵌套 JSON 数组
SELECT sort_json_object_keys(cast('[{"b":123,"b":456,"a":789},{"b":123},{"b":456},{"a":789}]' as json));
+----------------------------------------------------------------------------------------------------+
| sort_json_object_keys(cast('[{"b":123,"b":456,"a":789} ,{"b":123},{"b":456},{"a":789} ]' as json)) |
+----------------------------------------------------------------------------------------------------+
| [{"a":789,"b":123},{"b":123},{"b":456},{"a":789}] |
+----------------------------------------------------------------------------------------------------+
处理 NULL 值
SELECT sort_json_object_keys(null);
+-----------------------------+
| sort_json_object_keys(null) |
+-----------------------------+
| NULL |
+-----------------------------+
注意事项
-
SORT_JSON_OBJECT_KEYS
函数有一个别名SORT_JSONB_OBJECT_KEYS
,两者功能完全相同。 -
此函数仅排序对象的键,而不会修改键对应的值。
-
只会排序对象而不会排序数组,因为标准规定数组是一个有序的集合。
-
JSON 对象中的重复键会在转换为 Doris 的 JSON 类型时进行合并,仅保留第一个键值对。
-
此函数主要用于确保 JSON 对象的键以一致的顺序呈现,便于比较或调试,因为默认情况下 Doris 的 JSON 类型不保证键的顺序。