マップコンストラクタ/演算子は、新しいマップデータ型を構築するために使用されます。OceanBaseデータベースで現在サポートされているマップコンストラクタには map() があり、演算子には {} があります。
map
map() 関数は、マップデータを構築するために使用されます。構文は以下のとおりです:
map(key1, value1, key2, value2, ..., keyN, valueN)
入力パラメータの説明は以下のとおりです:
- 入力パラメータの数は偶数である必要があります。奇数番目のパラメータはKey配列を形成し、偶数番目のパラメータはValue配列を形成します。
- key1~keyN と value1~valueN の各要素のデータ型については、マップデータ型の概要を参照してください。
- 入力されたキー・バリュー・ペアのKeyは重複してはなりません。重複するKeyがある場合、後から入力されたValueが優先され、前のValueは上書きされます。
戻り値はマップデータ型(MAP)です。
例:
-- 構築されたマップデータには1つのキー・バリュー・ペアがあり、keyは1、valueは2です
SELECT map(1,2);
+----------+
| map(1,2) |
+----------+
| {1:2} |
+----------+
1 row in set
-- 構築されたマップデータには3つのキー・バリュー・ペアがあります
SELECT map(1,"a",2,"b",3,"c");
+------------------------+
| map(1,"a",2,"b",3,"c") |
+------------------------+
| {1:"a",2:"b",3:"c"} |
+------------------------+
1 row in set
-- Key配列のデータ型は奇数番号のパラメータによって、Value配列のデータ型は偶数番号のパラメータによって決定されます。
SELECT map(1,"a","b",1.8,"ccc",3);
+-------------------------------+
| map(1,"a","b",1.8,"ccc",3) |
+-------------------------------+
| {"1":"a","b":"1.8","ccc":"3"} |
+-------------------------------+
{}
{} は、文字列形式でマップデータを構築するために使用します。マップデータを {key1:value1, key2:value2, ..., keyN:valueN} の形式の文字列として記述すると、OceanBase データベースはそれをマップデータ型に変換します。そのため、マップ型の列にデータを挿入する際には、このような文字列を直接使用できます。
入力パラメータの説明は以下のとおりです:
- 各キー・バリュー・ペアは
,で区切り、Key と Value の間は:で区切ります。 - Key には引用符を付けなくてもかまいません。例:
{1:1,2:2,3:3}。 - 入力されるキー・バリュー・ペアの Key は重複してはなりません。重複する Key がある場合、後から入力された Value が優先され、前の Value は上書きされます。
例:
CREATE TABLE t1 (
id INT NOT NULL AUTO_INCREMENT,
m MAP(INT, INT)
);
INSERT INTO t1 (m) VALUES ('{1:1,2:2,3:3}');
SELECT m FROM t1;
+---------------+
| m |
+---------------+
| {1:1,2:2,3:3} |
+---------------+
1 row in set