文章目录
- [1. Map 增删改查](#1. Map 增删改查)
-
- [1.1 声明 Map 数据类型](#1.1 声明 Map 数据类型)
- [1.2 增](#1.2 增)
- [1.3 删](#1.3 删)
- [1.4 改](#1.4 改)
- [1.5 查](#1.5 查)
- [2. Map 相关函数](#2. Map 相关函数)
-
- [2.1 单个Map](#2.1 单个Map)
- [3. Map 与 String](#3. Map 与 String)
-
- [3.1 Map 转 string](#3.1 Map 转 string)
- [3.2 string 转 Map](#3.2 string 转 Map)
1. Map 增删改查
1.1 声明 Map 数据类型
- 语法:
map<基本数据类型, 基本数据类型>
注意是<>
,不是()
- 例子:
-
创建表时:
create table temp_db.map_test( id int comment "源数据主键id", smap map<string,string> comment "string型map", imap map<string,int> comment "int型map" );
-
字段填充时:
cast(null as map<string, string>) as XXX
-
1.2 增
insert into temp_db.map_test(id,smap,imap)
select 12,map('姓名','张三') as pp,map('年龄',23,'性别',1) as dd;
1.3 删
没有删除,只能覆盖
1.4 改
array_name['key'] = 'xxxx'
1.5 查
select array_name['key'] ;
注意:数组越界会报错。
2. Map 相关函数
2.1 单个Map
map_keys(map_name)
:获取该map的所有key,结果是一个Array。map_keys(map_name)
:获取该map的所有value,结果是一个Array。size(map_name)
:获取该map的键值对个数。- 判断map中是否包含某个key值:
array_contains(map_keys(map_name), 'key')
或者map_name["key"] is not null
3. Map 与 String
3.1 Map 转 string
select
...,
concat_ws(',', collect_list(concat_ws(':', k, v) ) )
from test_map_1
lateral view outer explode(map1) kv as k,v
3.2 string 转 Map
select str_to_map("name:zhangsan,age:25");
注意:键值对都没有引号