【Hive】HQL Array 『CRUD | 相关函数』

1. Array 增删改查

1.1 声明 Array 数据类型

  1. 语法:array<基本数据类型> 注意是<>,不是()
  2. 例子:
    1. 创建表时:
      create table temp_db.array_test (
      	id int comment '源数据主键id',
      	 year_arr array<string> comment '数组记录,年份',
      	 score_arr array<string> comment '数组记录,分数'
      );
      
    2. 字段填充时:cast(null as array<string>) as XXX

1.2 增

insert into  temp_db.array_test (id,year_arr,score_arr)
select 12,array('1991','1990','1989'),array('56','20','23');

1.3 删

没有删除,只能覆盖

1.4 改

array_name[2] = 'xxxx'

1.5 查

select array_name[2] ;

注意:数组越界会报错。

2. Array 相关函数

2.1 数组

  1. array():创建一个数组。例如,array(1,2,3)将创建一个包含1、2、3三个元素的数组。
  2. array_max(array):返回数组中的最大值。例如,array_max(array(1,2,3))将返回3。
  3. array_min(array):返回数组中的最小值。例如,array_min(array(1,2,3))将返回1。
  4. array_join(array, delimiter):使用指定的分隔符将数组中的元素连接成一个字符串。例如,6. array_join(array(1,2,3), ‘,’)将返回字符串"1,2,3"。【这个不常用,通常用concat_ws函数
  5. array_sort(array):返回一个按升序排序的数组。例如,array_sort(array(3,1,2))将返回数组(1,2,3)。

2.2 数组与元素

  1. array_contains(array, value):判断数组中是否包含指定的值。例如,array_contains(array(1,2,3), 2)将返回true。

  2. array_position(array, value):返回value在数组中的位置,如果不存在则返回0。例如,array_position(array(1,2,3), 2)将返回2。

  3. array_remove(array, value):返回一个包含所有不等于value的元素的数组。例如,array_remove(array(1,2,3), 2)将返回数组(1,3)。

  4. 访问元素:直接使用 [] 来取得数组元素,例如:a[1]

    SELECT split('ab_cd_ef', '_')[1];
    

    注意:如果数组元素为空或索引超出范围,则返回 NULL。

2.3 两个数组

  1. array_except(array1, array2):取左集,返回一个包含所有在array1中但不在array2中的元素的数组。例如,array_except(array(1,2,3), array(2,4))将返回数组(1,3)。
    在这里插入图片描述

  2. array_intersect(array1, array2):取交集,返回一个包含所有同时在array1和array2中的元素的数组。例如,array_intersect(array(1,2,3), array(2,3,4))将返回数组(2,3)。
    在这里插入图片描述

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ElegantCodingWH

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值