MAP_DELETE
MAP_DELETE
기존MAP에서 하나 이상의 키를 제거한 새 MAP을 반환하는 함수예요. 구조화된 맵 데이터를 다룰 때 씁니다.
본문
MAP_DELETE( <map>, <key1> [, <key2>, ... ] )
<map>
키를 제거할 대상 MAP이에요.
<keyN>
반환되는 MAP에서 생략할 키예요.
입력(소스) MAP의 내용에서 지정한 키를 하나 이상 제거한 MAP을 반환해요.
사용 메모
- 키 표현식의 타입은 MAP의 키 타입과 일치해야 해요. 타입이 VARCHAR라면 길이가 달라도 괜찮아요.
- MAP 안에 없는 키 값은 무시돼요.
예시 — 세 개의 키-값 쌍을 가진 MAP에서 두 쌍을 제거해 볼게요.
SELECT MAP_DELETE({'a':1,'b':2,'c':3}::MAP(VARCHAR,NUMBER),'a','b');
+--------------------------------------------------------------+
| MAP_DELETE({'A':1,'B':2,'C':3}::MAP(VARCHAR,NUMBER),'A','B') |
|--------------------------------------------------------------|
| { |
| "c": 3 |
| } |
+--------------------------------------------------------------+
테이블의 컬럼에 담긴 키를 제거하는 데도 쓸 수 있어요. 예를 들어 attrs 컬럼의 MAP에서 del_key1, del_key2 컬럼에 있는 키를 제거하면 다음과 같아요.
SELECT id, MAP_DELETE(attrs, del_key1, del_key2) AS attrs_after_delete
FROM demo_maps;
+----+---------------------+
| ID | ATTRS_AFTER_DELETE |
|----+---------------------|
| 1 | { |
| | "color": "red" |
| | } |
| 2 | { |
| | "brand": "ZenCo", |
| | "color": "blue" |
| | } |
+----+---------------------+