云数据库 GAUSSDB-数组函数和操作符:数组函数
数组函数
- array_append(anyarray, anyelement)
返回类型:anyarray
示例:
1 2 3 4 5
gaussdb=# SELECT array_append(ARRAY[1,2], 3) AS RESULT; result --------- {1,2,3} (1 row)
- array_prepend(anyelement, anyarray)
返回类型:anyarray
示例:
1 2 3 4 5
gaussdb=# SELECT array_prepend(1, ARRAY[2,3]) AS RESULT; result --------- {1,2,3} (1 row)
- array_cat(anyarray, anyarray)
返回类型:anyarray
示例:
1 2 3 4 5 6 7 8 9 10 11
gaussdb=# SELECT array_cat(ARRAY[1,2,3], ARRAY[4,5]) AS RESULT; result ------------- {1,2,3,4,5} (1 row) gaussdb=# SELECT array_cat(ARRAY[[1,2],[4,5]], ARRAY[6,7]) AS RESULT; result --------------------- {{1,2},{4,5},{6,7}} (1 row)
- array_union(anyarray, anyarray)
描述:连接两个数组,只支持一维数组。有入参为NULL时返回另一个入参。
返回类型:anyarray
示例:
1 2 3 4 5 6 7 8 9 10 11
gaussdb=# SELECT array_union(ARRAY[1,2,3], ARRAY[3,4,5]) AS RESULT; result ------------- {1,2,3,3,4,5} (1 row) gaussdb=# SELECT array_union(ARRAY[1,2,3], NULL) AS RESULT; result --------- {1,2,3} (1 row)
- array_union_distinct(anyarray, anyarray)
描述:连接两个数组,并去重,只支持一维数组。有入参为NULL时返回另一个入参。
返回类型:anyarray
示例:
1 2 3 4 5 6 7 8 9 10 11
gaussdb=# SELECT array_union_distinct(ARRAY[1,2,3], ARRAY[3,4,5]) AS RESULT; result ------------- {1,2,3,4,5} (1 row) gaussdb=# SELECT array_union_distinct(ARRAY[1,2,3], NULL) AS RESULT; result --------- {1,2,3} (1 row)
- array_intersect(anyarray, anyarray)
描述:两个数组取交集,只支持一维数组。有入参为NULL时返回NULL。
返回类型:anyarray
示例:
1 2 3 4 5 6 7 8 9 10 11
gaussdb=# SELECT array_intersect(ARRAY[1,2,3], ARRAY[3,4,5]) AS RESULT; result ------------- {3} (1 row) gaussdb=# SELECT array_intersect(ARRAY[1,2,3], NULL) AS RESULT; result -------- (1 row)
- array_intersect_distinct(anyarray, anyarray)
描述:两个数组取交集,并去重,只支持一维数组。有入参为NULL时返回NULL。
返回类型:anyarray
示例:
1 2 3 4 5 6 7 8 9 10 11
gaussdb=# SELECT array_intersect_distinct(ARRAY[1,2,2], ARRAY[2,2,4,5]) AS RESULT; result ------------- {2} (1 row) gaussdb=# SELECT array_intersect_distinct(ARRAY[1,2,3], NULL) AS RESULT; result -------- (1 row)
- array_except(anyarray, anyarray)
描述:两个数组取差,只支持一维数组。第一个入参为NULL时返回NULL,第二个入参为NULL时返回第一个入参。
返回类型:anyarray
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
gaussdb=# SELECT array_except(ARRAY[1,2,3], ARRAY[3,4,5]) AS RESULT; result ------------- {1,2} (1 row) gaussdb=# SELECT array_except(ARRAY[1,2,3], NULL) AS RESULT; result --------- {1,2,3} (1 row) gaussdb=# SELECT array_except(NULL, ARRAY[3,4,5]) AS RESULT; result -------- (1 row)
- array_except_distinct(anyarray, anyarray)
描述:两个数组取差,并去重,只支持一维数组。第一个入参为NULL时返回NULL,第二个入参为NULL时返回第一个入参。
返回类型:anyarray
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
gaussdb=# SELECT array_except_distinct(ARRAY[1,2,2,3], ARRAY[3,4,5]) AS RESULT; result ------------- {1,2} (1 row) gaussdb=# SELECT array_except_distinct(ARRAY[1,2,3], NULL) AS RESULT; result --------- {1,2,3} (1 row) gaussdb=# SELECT array_except_distinct(NULL, ARRAY[3,4,5]) AS RESULT; result -------- (1 row)
- array_ndims(anyarray)
返回类型:int
示例:
1 2 3 4 5
gaussdb=# SELECT array_ndims(ARRAY[[1,2,3], [4,5,6]]) AS RESULT; result -------- 2 (1 row)
- array_dims(anyarray)
返回类型:text
示例:
1 2 3 4 5
gaussdb=# SELECT array_dims(ARRAY[[1,2,3], [4,5,6]]) AS RESULT; result ------------ [1:2][1:3] (1 row)
- array_length(anyarray, int)
返回类型:int
示例:
1 2 3 4 5 6 7 8 9 10 11
gaussdb=# SELECT array_length(array[1,2,3], 1) AS RESULT; result -------- 3 (1 row) gaussdb=# SELECT array_length(array[[1,2,3],[4,5,6]], 2) AS RESULT; result -------- 3 (1 row)
- array_lower(anyarray, int)
返回类型:int
示例:
1 2 3 4 5
gaussdb=# SELECT array_lower('[0:2]={1,2,3}'::int[], 1) AS RESULT; result -------- 0 (1 row)
如果第一个参数为null开启参数varray_compat后会报错Reference to uninitialized collection,开启前返回NULL。
- array_upper(anyarray, int)
返回类型:int
示例:
1 2 3 4 5
gaussdb=# SELECT array_upper(ARRAY[1,8,3,7], 1) AS RESULT; result -------- 4 (1 row)
如果第一个参数为null开启参数varray_compat后会报错Reference to uninitialized collection,开启前返回NULL。
- array_to_string(anyarray, text [, text])
描述:使用第一个text作为数组的新分隔符,使用第二个text替换数组值为null的值。
返回类型:text
示例:
1 2 3 4 5
gaussdb=# SELECT array_to_string(ARRAY[1, 2, 3, NULL, 5], ',', '*') AS RESULT; result ----------- 1,2,3,*,5 (1 row)
- array_delete(anyarray)
返回类型:anyarray
示例:
gaussdb=# SELECT array_delete(ARRAY[1,8,3,7]) AS RESULT; result -------- {} (1 row)
如果第一个参数为null开启参数varray_compat后会报错Reference to uninitialized collection,开启前返回NULL。
- array_deleteidx(anyarray, int)
返回类型:anyarray
示例:
gaussdb=# SELECT array_deleteidx(ARRAY[1,2,3,4,5], 1) AS RESULT; result ----------- {2,3,4,5} (1 row)
- array_deleteidx(anyarray, int)此函数在参数a_format_version值为10c和a_format_dev_version值为s1的情况下被禁用。
- 在开启varray_compat参数后,如果第一个参数为null会报错Reference to uninitialized collection,第二个参数为null返回原数组,未开启该参数时,参数有一个为null则返回null;若第二个参数小于等于0时开启参数后会报错Subscript outside of limit,开启前返回原数组;若第二个参数大于该数组元素数量时(包括0即空数组)开启参数后会报错Subcript outside of count开启前返回原数组。
- array_extendnull(anyarray, int)
返回类型:anyarray
示例:
gaussdb=# SELECT array_extendnull(ARRAY[1,8,3,7],1) AS RESULT; result -------------- {1,8,3,7,null} (1 row)
如果第一个参数为null开启参数varray_compat后会报错Reference to uninitialized collection,开启前返回NULL;如果第二个参数为NULL,开启参数前返回NULL,开启后返回原数组;若第二个参数小于0开启参数后报错numeric or value error开启前返回原数组。
- array_extendnull(anyarray, int, int)
返回类型:anyarray
示例:
-- 设置参数 gaussdb=# set a_format_version = '10c'; gaussdb=# set a_format_dev_version = 's1'; gaussdb=# SELECT array_extendnull(ARRAY[1,8,3,7],2,2) AS RESULT; result -------------- {1,8,3,7,8,8} (1 row) gaussdb=# set a_format_version = '10c'; gaussdb=# set a_format_dev_version = 's1';
- array_extendnull(anyarray, int, int)此函数在参数a_format_version值为10c和a_format_dev_version值为s1的情况下有效。
- 如果第一个参数为null开启参数varray_compat后会报错Reference to uninitialized collection,开启前返回NULL;如果第二个参数或者第三个参数为NULL,开启参数前返回NULL,开启后返回原数组。
- array_trim(anyarray, int)
返回类型:anyarray
示例:
gaussdb=# SELECT array_trim(ARRAY[1,8,3,7],1) AS RESULT; result --------- {1,8,3} (1 row)
如果第一个参数为null开启参数varray_compat后会报错Reference to uninitialized collection,开启前返回NULL;如果第二个参数为NULL,开启参数前返回NULL,开启后返回原数组;如果第二个参数超过数组元素个数(包括0即空数组)时开启参数后会报错Subscipt outside of count,开启前返回空数组,如果第二个参数小于0开启后报错numeric or value error,开启前返回原数组。
- array_exists(anyarray, int)
返回类型:boolean
示例:
gaussdb=# SELECT array_exists(ARRAY[1,8,3,7],1) AS RESULT; result -------- t (1 row)
- array_next(anyarray, int)
描述:根据第二个入参返回数组中指定下标元素的下一个元素的下标。
返回类型:int
示例:
gaussdb=# SELECT array_next(ARRAY[1,8,3,7],1) AS RESULT; result -------- 2 (1 row)
如果第一个参数为null开启参数varray_compat后会报错Reference to uninitialized collection,开启前返回NULL。
- array_prior(anyarray, int)
描述:根据第二个入参返回数组中指定下标元素的上一个元素的下标。
返回类型:int
示例:
gaussdb=# SELECT array_prior(ARRAY[1,8,3,7],2) AS RESULT; result -------- 1 (1 row)
如果第一个参数为null开启参数varray_compat后会报错Reference to uninitialized collection,开启前返回NULL。
- string_to_array(text, text [, text])
描述:使用第二个text指定分隔符,使用第三个可选的text作为NULL值替换模板,如果分隔后的子串与第三个可选的text完全匹配,则将其替换为NULL。
返回类型:text[]
示例:
1 2 3 4 5 6 7 8 9 10
gaussdb=# SELECT string_to_array('xx~^~yy~^~zz', '~^~', 'yy') AS RESULT; result -------------- {xx,NULL,zz} (1 row) gaussdb=# SELECT string_to_array('xx~^~yy~^~zz', '~^~', 'y') AS RESULT; result ------------ {xx,yy,zz} (1 row)
- unnest(anyarray)
返回类型:setof anyelement
示例:
1 2 3 4 5 6
gaussdb=# SELECT unnest(ARRAY[1,2]) AS RESULT; result -------- 1 2 (2 rows)
- GaussDB数据库函数_GaussDB函数和操作符_高斯数据库函数-华为云
- GaussDB数据库函数和字符串_高斯数据库优势_新建高斯数据库_高斯协议
- GaussDB版本_GaussDB数据库版本_高斯数据库版本-华为云
- GaussDB函数_GaussDB数据库函数_高斯数据库函数_华为云
- GaussDB培训_GaussDB教程_高斯数据库培训-华为云
- GaussDB支持的函数_GaussDB函数类型解析_高斯数据库支持的函数-华为云
- 调用函数_函数调用方式_函数工作流 FunctionGraph-华为云
- GaussDB数据库函数_GaussDB介绍_高斯数据库函数
- 什么是函数工作流_函数托管计算服务_函数工作流 FunctionGraph-华为云
- 使用容器镜像部署函数_函数部署_函数工作流 FunctionGraph-华为云