- 카테고리:
반정형 및 정형 데이터 함수 (지도)
MAP_CAT¶
두 MAP 값을 연결해서 반환합니다.
구문¶
MAP_CAT( <map1> , <map2> )
인자¶
map1원본 MAP입니다.
map2map1에 추가할 MAP입니다.
반환¶
이 함수의 반환 유형은 map1 유형입니다. map2 는 강제 변환 규칙에 따라 map1 유형으로 강제 변환됩니다. 강제 변환 규칙에 대한 자세한 내용은 값을 암시적으로 캐스팅하기(강제 변환) 섹션을 참조하십시오.
사용법 노트¶
map1과map2가 모두 동일한 키가 있는 값을 가진 경우 출력 맵에는map2의 값이 포함됩니다.두 인자 중 하나가 NULL이면 함수는 오류를 보고하지 않고 NULL을 반환합니다.
예¶
두 개의 MAP을 만들고 연결합니다.
SELECT MAP_CAT(
{'map1key1':'map1value1','map1key2':'map1value2'}::MAP(VARCHAR,VARCHAR),
{'map2key1':'map2value1','map2key2':'map2value2'}::MAP(VARCHAR,VARCHAR))
AS concatenated_maps;
+-----------------------------+
| CONCATENATED_MAPS |
|-----------------------------|
| { |
| "map1key1": "map1value1", |
| "map1key2": "map1value2", |
| "map2key1": "map2value1", |
| "map2key2": "map2value2" |
| } |
+-----------------------------+
다음과 같이 MAP 값이 포함된 임시 테이블을 만듭니다.
CREATE OR REPLACE TEMP TABLE demo_maps(
id INTEGER,
attrs MAP(VARCHAR, VARCHAR),
defaults MAP(VARCHAR, VARCHAR),
keep_keys ARRAY(VARCHAR),
ins_key VARCHAR,
ins_val VARCHAR,
update_existing BOOLEAN,
del_key1 VARCHAR,
del_key2 VARCHAR);
INSERT INTO demo_maps SELECT
1,
{'color':'red','size':'M','brand':'Acme'}::MAP(VARCHAR, VARCHAR),
{'currency':'USD','size':'L'}::MAP(VARCHAR, VARCHAR),
['color','brand']::ARRAY(VARCHAR),
'material',
'cotton',
TRUE,
'size',
'brand';
INSERT INTO demo_maps SELECT
2,
{'color':'blue','brand':'ZenCo'}::MAP(VARCHAR, VARCHAR),
{'currency':'EUR','size':'M','brand':'ZenCo'}::MAP(VARCHAR, VARCHAR),
['brand','currency']::ARRAY(VARCHAR),
'brand',
'ZC',
FALSE,
'currency',
'material';
테이블을 쿼리하여 데이터를 표시합니다.
SELECT * FROM demo_maps;
+----+---------------------+----------------------+--------------+----------+---------+-----------------+----------+----------+
| ID | ATTRS | DEFAULTS | KEEP_KEYS | INS_KEY | INS_VAL | UPDATE_EXISTING | DEL_KEY1 | DEL_KEY2 |
|----+---------------------+----------------------+--------------+----------+---------+-----------------+----------+----------|
| 1 | { | { | [ | material | cotton | True | size | brand |
| | "brand": "Acme", | "currency": "USD", | "color", | | | | | |
| | "color": "red", | "size": "L" | "brand" | | | | | |
| | "size": "M" | } | ] | | | | | |
| | } | | | | | | | |
| 2 | { | { | [ | brand | ZC | False | currency | material |
| | "brand": "ZenCo", | "brand": "ZenCo", | "brand", | | | | | |
| | "color": "blue" | "currency": "EUR", | "currency" | | | | | |
| | } | "size": "M" | ] | | | | | |
| | | } | | | | | | |
+----+---------------------+----------------------+--------------+----------+---------+-----------------+----------+----------+
다음과 같이 두 MAP 열 attrs 및 defaults 를 연결합니다.
SELECT id, MAP_CAT(attrs, defaults) AS merged
FROM demo_maps;
+----+----------------------+
| ID | MERGED |
|----+----------------------|
| 1 | { |
| | "brand": "Acme", |
| | "color": "red", |
| | "currency": "USD", |
| | "size": "L" |
| | } |
| 2 | { |
| | "brand": "ZenCo", |
| | "color": "blue", |
| | "currency": "EUR", |
| | "size": "M" |
| | } |
+----+----------------------+
출력에는 두 맵의 키와 값이 포함됩니다. 출력은 attr 열의 map1 및 defaults 열의 map2 에 모두 동일한 키를 가진 값이 포함된 경우 출력 맵에 map2 의 값이 포함됨을 보여줍니다. 즉, 크기 M 이 아닌 크기 L 이 행 1 의 출력에 있습니다.