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

SORT_JSON_OBJECT_KEYS

説明

SORT_JSON_OBJECT_KEYSはJSONオブジェクトのキーをソートします。この関数はJSONオブジェクトを入力として受け取り、キーが辞書順にソートされた新しいJSONオブジェクトを返します。

JSON標準によると、JSONオブジェクトは順序なしコレクションであることに注意してください。ただし、この関数はキーの順序の一貫性を確保する必要がある場合に有用です。例えば、2つのJSONオブジェクトの内容が同一かどうかを比較する場合などです。

構文

SORT_JSON_OBJECT_KEYS(json_value)

Alias

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 |
+-----------------------------+

注釈

  1. SORT_JSON_OBJECT_KEYS関数にはSORT_JSONB_OBJECT_KEYSというエイリアスがあり、両方の関数は同一の機能を持ちます。

  2. この関数はオブジェクトのキーのみをソートし、関連する値は変更しません。

  3. この関数はオブジェクトのみをソートし、配列はソートしません。これは、標準により配列が順序付きコレクションであると規定されているためです。

  4. JSONオブジェクト内の重複するキーは、DorisのJSON型に変換される際にマージされ、最初のキーと値のペアのみが保持されます。

  5. この関数は主に、JSONオブジェクトのキーを一貫した順序で表示することを保証するために使用されます。これは比較やデバッグの目的で使用され、デフォルトではDorisのJSON型はキーの順序を保証しないためです。