数组函数
本文介绍数组函数的语法规则,包括参数解释、函数示例等。
函数列表
| 函数 | 描述 |
|---|---|
| 将输入的参数构造成数组,参数类型必须相同。 | |
| 获取指定元素的下标,下标从1开始。如果指定元素不存在,则返回0。 | |
| 计算数组中元素的个数。 | |
| 计算数组中元素的个数, 同cardinality。 | |
| 判断数组中是否包含指定元素。如果包含,则返回true。 | |
| 判断数组中是否包含指定元素。如果包含,则返回true,同contains。 | |
| 将指定的元素添加到数组的开始位置。 | |
| 将指定的元素添加到数组的末尾。 | |
| 返回从start到end索引的数组。 | |
| 使用指定的分隔符str连接arr所有元素。 | |
| 使用指定的分隔符str2将str1拆分为数组 | |
| 返回所提供的基于0的索引处的数组元素。 | |
| 返回所提供的基于1的索引处的数组元素。 | |
| 返回数组中第一次出现expr的基于0的索引,如果未出现,则返回-1。 | |
| 返回数组中第一次出现expr的基于1的索引,如果未出现,则返回-1。 |
array函数
将参数构建成数组,参数类型必须相同。
语法:array[expr1,expr ...]
| 参数名称 | 描述 | 类型 | 是否必选 |
|---|---|---|---|
| expr | 原始数据 | String/Integer/Long/Double/Float | 是 |
返回值类型:Array类型
示例:SELECT ARRAY['1','2','3','4','5']
| 类型 | 查询语句 | 返回结果 |
|---|---|---|
| 场景 | ARRAY['1','2','3','4','5'] | ["1", "2", "3", "4", "5"] |
array_position函数
获取指定元素的下标,下标从1开始。如果指定元素不存在,则返回0。
语法:array_position(expr, ele)
| 参数名称 | 描述 | 类型 | 是否必选 |
|---|---|---|---|
| expr | 原始数组 | 数组类型。 | 是 |
| ele | 指定的元素 | 数组中的一个元素,必须与数组中元素类型相同。 | 是 |
返回值类型:Integer类型
示例:SELECT ARRAY_POSITION(ARRAY['1','2','3'],'2')
| 类型 | 查询语句 | 返回结果 |
|---|---|---|
| 场景 | ARRAY_POSITION(ARRAY['1','2','3'],'2') | 2 |
cardinality函数
计算数组中元素的个数,参数类型必须相同。
语法:cardinality(expr)
| 参数名称 | 描述 | 类型 | 是否必选 |
|---|---|---|---|
| expr | 原始数组 | Array(String/Number) | 是 |
返回值类型:Integer类型
示例:SELECT CARDINALITY(ARRAY['1','2','3'])
| 类型 | 查询语句 | 返回结果 |
|---|---|---|
| 场景 | CARDINALITY(ARRAY['1','2','3']) | 3 |
mv_length函数
计算数组中元素的个数, 同cardinality。
语法:mv_length(expr)
| 参数名称 | 描述 | 类型 | 是否必选 |
|---|---|---|---|
| expr | 原始数组 | Array(String/Number) | 是 |
返回值类型:Integer类型
示例:SELECT MV_LENGTH(ARRAY['1','2','3'])
| 类型 | 查询语句 | 返回结果 |
|---|---|---|
| 场景 | MV_LENGTH (ARRAY['1','2','3']) | 3 |
contains函数
判断数组中是否包含指定元素。如果包含,则返回true。
语法:contains(expr, ele)
| 参数名称 | 描述 | 类型 | 是否必选 |
|---|---|---|---|
| expr | 原始数组 | Array(String/Number) | 是 |
| ele | 指定的元素 | String/Number,必须与数组中元素类型相同。 | 是 |
返回值类型:Boolean类型
示例:SELECT CONTAINS(ARRAY['1','2'],'1')
| 类型 | 查询语句 | 返回结果 |
|---|---|---|
| 场景 | CONTAINS(ARRAY['1','2'],'1') | true |
mv_contains函数
判断数组中是否包含指定元素。如果包含,则返回true,同contains。
语法:mv_contains(expr, ele)
| 参数名称 | 描述 | 类型 | 是否必选 |
|---|---|---|---|
| expr | 原始数组 | Array(String/Number) | 是 |
| ele | 指定的元素 | String/Number,必须与数组中元素类型相同。 | 是 |
返回值类型:Boolean类型
示例:SELECT MV_CONTAINS(ARRAY['1','2'],'1')
| 类型 | 查询语句 | 返回结果 |
|---|---|---|
| 场景 | MV_CONTAINS(ARRAY['1','2'],'1') | true |
mv_prepend函数
将指定的元素添加到数组的开始位置。
语法:mv_prepend(expr, arr)
| 参数名称 | 描述 | 类型 | 是否必选 |
|---|---|---|---|
| expr | 指定的元素 | String/Number,必须与数组中元素类型相同。 | 是 |
| arr | 原始数组 | Array(String/Number) | 是 |
返回值类型:Array类型
示例:SELECT MV_PREPEND('1', ARRAY ['1','2'])
| 类型 | 查询语句 | 返回结果 |
|---|---|---|
| 场景 | MV_PREPEND ('1', ARRAY['1','2']) | ["1","1","2"] |
mv_append函数
将指定的元素添加到数组的末尾。
语法:mv_append(arr, expr)
| 参数名称 | 描述 | 类型 | 是否必选 |
|---|---|---|---|
| arr | 原始数组 | Array(String/Number) | 是 |
| expr | 指定的元素 | String/Number,必须与数组中元素类型相同。 | 是 |
返回值类型:Array类型
示例:SELECT MV_APPEND(ARRAY['1','2'],'1')
| 类型 | 查询语句 | 返回结果 |
|---|---|---|
| 场景 | MV_APPEND(ARRAY['1','2'], '1') | ["1","2","1"] |
mv_slice函数
返回从start到end索引的数组。
语法:mv_slice(arr, start, end)
| 参数名称 | 描述 | 类型 | 是否必选 |
|---|---|---|---|
| arr | 原始数组 | Array(String/Number) | 是 |
| start | 起始位置 | Integer | 是 |
| end | 结束位置 | Integer | 是 |
返回值类型:Array类型
示例:SELECT MV_SLICE(ARRAY['1','2','3','4','5'], 2, 4)
| 类型 | 查询语句 | 返回结果 |
|---|---|---|
| 场景 | MV_SLICE(ARRAY['1','2','3','4','5'], 2, 4) | ["3","4"] |
mv_to_string函数
使用指定的分隔符str连接arr所有元素。
语法:mv_to_string(arr, str)
| 参数名称 | 描述 | 类型 | 是否必选 |
|---|---|---|---|
| arr | 原始数组 | Array(String/Number) | 是 |
| str | 指定分隔符 | String | 是 |
返回值类型:String类型
示例:SELECT MV_TO_STRING(ARRAY['1','2','3','4','5'],'-')
| 类型 | 查询语句 | 返回结果 |
|---|---|---|
| 场景 | MV_TO_STRING(ARRAY['1','2','3','4','5'],'-') | 1-2-3-4-5 |
string_to_mv函数
使用指定的分隔符str2将str1拆分为数组。
语法:string_to_mv(str1, str2)
| 参数名称 | 描述 | 类型 | 是否必选 |
|---|---|---|---|
| str1 | 原始字符串 | String | 是 |
| str2 | 指定分隔符 | String | 是 |
返回值类型:Array类型
示例:SELECT STRING_TO_MV('1-2-3-4-5','-')
| 类型 | 查询语句 | 返回结果 |
|---|---|---|
| 场景 | STRING_TO_MV('1-2-3-4-5','-') | ["1","2","3","4","5"] |
mv_offset函数
返回所提供的基于0的索引处的数组元素,或对于超出范围的索引返回null。
语法:mv_offset(arr, index)
| 参数名称 | 描述 | 类型 | 是否必选 |
|---|---|---|---|
| arr | 原始数组 | Array(String/Number) | 是 |
| index | 指定索引位置 | Integer | 是 |
返回值类型:String/Integer/Long/Boolean/Double类型
示例:SELECT MV_OFFSET(ARRAY['1','2','3','4','5'], 2)
| 类型 | 查询语句 | 返回结果 |
|---|---|---|
| 场景 | MV_OFFSET(ARRAY['1','2','3','4','5'], 2) | 3 |
mv_ordinal函数
返回所提供的基于1的索引处的数组元素,或对于超出范围的索引返回null。
语法:mv_ordinal(arr, index)
| 参数名称 | 描述 | 类型 | 是否必选 |
|---|---|---|---|
| arr | 原始数组 | Array(String/Number) | 是 |
| index | 指定索引位置 | Integer | 是 |
返回值类型:String/Integer/Long/Boolean/Double类型
示例:SELECT MV_ORDINAL(ARRAY['1','2','3','4','5'], 2)
| 类型 | 查询语句 | 返回结果 |
|---|---|---|
| 场景 | MV_ORDINAL (ARRAY['1','2','3','4','5'], 2) | 2 |
mv_offset_of函数
返回数组中第一次出现expr的基于0的索引,如果未出现,则返回-1。
语法:mv_offset_of(arr, expr)
| 参数名称 | 描述 | 类型 | 是否必选 |
|---|---|---|---|
| arr | 原始数组 | Array(String/Number) | 是 |
| expr | 指定元素 | String/Number,必须与数组中元素类型相同。 | 是 |
返回值类型:Integer类型
示例:SELECT MV_OFFSET_OF(ARRAY['1','2','3','4','5'], '2')
| 类型 | 查询语句 | 返回结果 |
|---|---|---|
| 场景 | MV_OFFSET_OF(ARRAY['1','2','3','4','5'], '2') | 1 |
mv_ordinal_of函数
返回数组中第一次出现expr的基于1的索引,如果未出现,则返回-1。
语法:mv_ordinal_of(arr, expr)
| 参数名称 | 描述 | 类型 | 是否必选 |
|---|---|---|---|
| arr | 原始数组 | Array(String/Number) | 是 |
| expr | 指定元素 | String/Number,必须与数组中元素类型相同。 | 是 |
返回值类型:Integer类型
示例:SELECT MV_ORDINAL_OF(ARRAY['1','2','3','4','5'], '2')
| 类型 | 查询语句 | 返回结果 |
|---|---|---|
| 场景 | MV_ORDINAL_OF(ARRAY['1','2','3','4','5'], '2') | 2 |