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

文章目录

  • 1. Array 增删改查
    • 1.1 声明 Array 数据类型
    • 1.2 增
    • 1.3 删
    • 1.4 改
    • 1.5 查
  • 2. Array 相关函数
    • 2.1 数组
    • 2.2 数组与元素
    • 2.3 两个数组

1. Array 增删改查

1.1 声明 Array 数据类型

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

你可能感兴趣的:(#,Hive,sql,数据库)