GBase 8a
其他
文章

array数组函数

发表于2025-09-27 02:35:4995次浏览4个评论

集群版本 953.28.20

1、string_to_array函数

功能:使用提供的分隔符和可选的空串将字符串划分成数组元素
语法:
string_to_array(text1,text2[,text3])
参数:
text1:待分割的字符串,如为'',则返回'' 
text2:分割字符串,如为'',则返回整个待分割的串为一个元素, 如为null,则待分割的串中每个字符为一个元素
text3:设定空串的字符串,可选。返回的数组元素中如与该参数匹配则替换为NULL
示例:
gbase> select string_to_array('xx~^~yy~^~zz','~^~');
+---------------------------------------+
| string_to_array('xx~^~yy~^~zz','~^~') |
+---------------------------------------+
| {xx,yy,zz}                            |
+---------------------------------------+
1 row in set (Elapsed: 00:00:00.00)

gbase> select string_to_array('xx~^~yy~^~zz','~^~','aa');
+--------------------------------------------+
| string_to_array('xx~^~yy~^~zz','~^~','aa') |
+--------------------------------------------+
| {xxaayyaazz}                               |
+--------------------------------------------+
1 row in set (Elapsed: 00:00:00.00)

gbase> select string_to_array('xx~^~yy~^~zz','','aa');   
+-----------------------------------------+
| string_to_array('xx~^~yy~^~zz','','aa') |
+-----------------------------------------+
| {xx~^~yy~^~zz}                          |
+-----------------------------------------+
1 row in set (Elapsed: 00:00:00.00)

2、array_string

功能:返回数组中所有元素使用分隔符连接起来后的字符串。返回值长度上限为varchar长度32k。
语法:
array_to_string(array,delimiter[,null_string])
参数:
array:数组类型,可以为array类型的字段、array数组常量、string_to_array函数
delimiter:分隔符
null_string:数组中null要替换为的字符串,可选参数。如无该参数,null将被省略。
注:
如输入参数array为NULL则报错类型不匹配;如输入参数array为ARRAY[NULL]则返回空串;如输入参数delimiter为NULL则返回NULL;如输入参数null_value为NULL则不对数组中NULL值进行替换。
示例:
gbase> select array_to_string(array['a','b'],'+');
+-------------------------------------+
| array_to_string(array['a','b'],'+') |
+-------------------------------------+
| a+b                                 |
+-------------------------------------+
1 row in set (Elapsed: 00:00:00.00)

gbase> select array_to_string(array['a','b',null],'+','***');
+------------------------------------------------+
| array_to_string(array['a','b',null],'+','***') |
+------------------------------------------------+
| a+b+***                                        |
+------------------------------------------------+
1 row in set (Elapsed: 00:00:00.00)

gbase> select array_to_string(array['a','b',null],'+');
+------------------------------------------+
| array_to_string(array['a','b',null],'+') |
+------------------------------------------+
| a+b                                      |
+------------------------------------------+
1 row in set (Elapsed: 00:00:00.00)

3、array_exists函数

功能:
检查一维数组arr中是否存在满足匿名函数func条件的元素。NULL也作为数组中的元素值进行处理
语法:
Array_exists(func,arr,...)
参数:
func:筛选数组元素的一个条件表达式,语法为:
(parameter list) -> function body
parameter list:参数列表,用以表示条件表达式的参数,不可以为空,参数与数组呈映射关系,即:array_exists((x,y)->x=y,arr1,arr2)中,x映射arr1中元素,y映射arr2中元素;如参数列表中只有一个参数,可省略小括号包裹:array_exists(x->x=2,arr1)
function body:条件表达式的函数体,用于表示函数的具体逻辑,只能为一条语句,不支持使用聚合函数,不可以为null,
arr:具有一组元素的任何类型的一维数组;支持col(数组类型 );可以为空数组。
示例:
gbase> select array_exists(x->x in (3,4),ARRAY[1,null,3,11,12,null,null,5,6]) from dual;

+-------------------------------------------------------------------------------+
| array_exists(x->x in (3,4),ARRAY[1,null,3,11,12,null,null,5,6])  |
+-------------------------------------------------------------------------------+
|                                            1 |
+-------------------------------------------------------------------------------+
1 rows in set

4、array_first函数

功能:
返回一维数组arr中第一个满足匿名函数func条件的元素。NULL也作为数组中的元素值进行处理
语法:
Array_first(func,arr1,...)
参数:
func:筛选数组元素的一个条件表达式,语法为:
(parameter list) -> function body
parameter list:参数列表,用以表示条件表达式的参数,不可以为空,参数与数组呈映射关系,即:array_exists((x,y)->x=y,arr1,arr2)中,x映射arr1中元素,y映射arr2中元素;如参数列表中只有一个参数,可省略小括号包裹:array_exists(x->x=2,arr1)
function body:条件表达式的函数体,用于表示函数的具体逻辑,只能为一条语句,不支持使用聚合函数,不可以为null,
arr:具有一组元素的任何类型的一维数组;支持col(数组类型 );可以为空数组。
示例:
gbase> select array_first(x->x!=5,ARRAY[5,3,2,5,4]) from dual;

+--------------------------------------------------+
| array_first(x->x!=5,ARRAY[5,3,2,5,4])  |
+--------------------------------------------------+
|                            3 |
+--------------------------------------------------+
1 rows in set

5、array_last函数

功能:
返回一维数组arr1中最后一个满足匿名函数func条件的元素。NULL也作为数组中的元素值进行处理。
语法:
Array_last(func,arr,...)
参数:
func:筛选数组元素的一个条件表达式,语法为:
(parameter list) -> function body
parameter list:参数列表,用以表示条件表达式的参数,不可以为空,参数与数组呈映射关系,即:array_exists((x,y)->x=y,arr1,arr2)中,x映射arr1中元素,y映射arr2中元素;如参数列表中只有一个参数,可省略小括号包裹:array_exists(x->x=2,arr1)
function body:条件表达式的函数体,用于表示函数的具体逻辑,只能为一条语句,不支持使用聚合函数,不可以为null,
arr:具有一组元素的任何类型的一维数组;支持col(数组类型 );可以为空数组。
示例:
gbase> select array_to_string(ARRAY[’a’,’b’,’c’,’d’,’e’,null],’,’,’nu’) from dual;

+----------------------------------------------------------------------+
| array_to_string(ARRAY[’a’,’b’,’c’,’d’,’e’,null],’,’,’nu’)  |
+----------------------------------------------------------------------+
| a,b,c,d,e,nu                                      |
+----------------------------------------------------------------------+
1 rows in set

评论

登录后才可以发表评论
GBase用户21182发表于 10个月前
辛苦您分享了
崔哥发表于 7个月前
兔园标物序,惊时最是梅。衔霜当路发,映雪拟寒开。枝横却月观,花绕凌风台。朝洒长门泣,夕驻临邛杯。应知早飘落,故逐上春来。
用户头像
levvel发表于 3个月前
太赞了!
曾浩轩发表于 2个月前
继续努力