マップ操作関数は、入力されたマップデータに対して Key または Value 要素の抽出などの基本操作を行い、操作後のマップデータを返します。現在、OceanBase データベースでサポートされているマップ操作関数には map_keys() と map_values() があります。
map_keys
map_keys() 関数は、対象マップの Key リストを返します。構文は次のとおりです。
map_keys(map)
入力パラメーターはマップデータである必要があります。
戻り値は配列型です。
例:
SELECT map_keys(map(1,"apple",2,"banana"));
+-------------------------------------+
| map_keys(map(1,"apple",2,"banana")) |
+-------------------------------------+
| [1,2] |
+-------------------------------------+
1 row in set
CREATE TABLE t1 (
id INT NOT NULL AUTO_INCREMENT,
m MAP(INT, INT)
);
INSERT INTO t1 (m) VALUES ('{1:1,2:2,3:3}');
INSERT INTO t1 (m) VALUES ('{"1":1, 2 : 2 , "3 " : 3}');
INSERT INTO t1 (m) VALUES ('{1.5:2, 1.6:"3"}');
SELECT m, map_keys(m) FROM t1;
+---------------+-------------+
| m | map_keys(m) |
+---------------+-------------+
| {1:1,2:2,3:3} | [1,2,3] |
| {1:1,2:2,3:3} | [1,2,3] |
| {2:3} | [2] |
+---------------+-------------+
3 rows in set
map_values
map_values() 関数は、対象マップの Value リストを返します。構文は次のとおりです。
map_values(map)
入力パラメーターはマップデータである必要があります。
戻り値は配列型です。
例:
SELECT map_values(map(1,"apple",2,"banana"));
+-------------------------------------+
| map_values(map(1,"apple",2,"banana")) |
+-------------------------------------+
| ["apple","banana"] |
+-------------------------------------+
1 row in set
-- t1 のテーブル作成および INSERT 文は map_keys の例を参照してください
SELECT m, map_values(m) FROM t1;
+---------------+---------------+
| m | map_values(m) |
+---------------+---------------+
| {1:1,2:2,3:3} | [1,2,3] |
| {1:1,2:2,3:3} | [1,2,3] |
| {2:3} | [3] |
+---------------+---------------+
3 rows in set