-
split(string, delim) 描述:将字符串string按分隔符delimiter进行分隔,并返回数组。该函数仅8.2.0及以上集群版本支持。 返回类型:text[] 示例: 1
2
3
4
5
6
7
8
9
10 SELECT SPLIT('a-b-c-d-e', '-') AS RESULT;
result
-------------
{a,b,c,d,e}
(1 row)
SELECT SPLIT('a-b-c-d-e', '-')[4] AS RESULT;
result
--------
d
(1 row)
-
array_cat(anyarray, anyarray) 描述:连接两个数组,支持多维数组。 返回类型:anyarray 示例: 1
2
3
4
5
6
7
8
9
10
11 SELECT array_cat(ARRAY[1,2,3], ARRAY[4,5]) AS RESULT;
result
-------------
{1,2,3,4,5}
(1 row)
SELECT array_cat(ARRAY[[1,2],[4,5]], ARRAY[6,7]) AS RESULT;
result
---------------------
{{1,2},{4,5},{6,7}}
(1 row)
-
array_to_string(anyarray, text [, text]) 描述:使用第一个text作为数组的新分隔符,使用第二个text替换数组值为null的值。 返回类型:text 示例: 1
2
3
4
5 SELECT array_to_string(ARRAY[1, 2, 3, NULL, 5], ',', '*') AS RESULT;
result
-----------
1,2,3,*,5
(1 row)
在string_to_array中,如果省略null字符串参数或为NULL,将字符串中没有输入内容的子串替换为NULL。 在array_to_string中,如果省略null字符串参数或为NULL,运算中将跳过在数组中的任何null元素,并且不会在输出字符串中出现。
-
unnest(anyarray) 描述:扩大一个数组为一组行。 返回类型:setof anyelement 示例: 1
2
3
4
5
6 SELECT unnest(ARRAY[1,2]) AS RESULT;
result
--------
1
2
(2 rows)
unnest函数配合string_to_array数组使用。数组转列,先将字符串按逗号分割成数组,然后再把数组转成列: 1
2
3
4
5
6
7
8 SELECT unnest(string_to_array('a,b,c,d',',')) AS RESULT;
result
--------
a
b
c
d
(4 rows)
-
string_to_array(text, text [, text]) 描述:使用第二个text指定分隔符,使用第三个可选的text作为NULL值替换模板,如果分隔后的子串与第三个可选的text完全匹配,则将其替换为NULL。 返回类型:text[] 示例: 1
2
3
4
5
6
7
8
9
10 SELECT string_to_array('xx~^~yy~^~zz', '~^~', 'yy') AS RESULT;
result
--------------
{xx,NULL,zz}
(1 row)
SELECT string_to_array('xx~^~yy~^~zz', '~^~', 'y') AS RESULT;
result
------------
{xx,yy,zz}
(1 row)
在string_to_array中,如果分隔符参数是NULL,输入字符串中的每个字符将在结果数组中变成一个独立的元素。如果分隔符是一个空白字符串,则整个输入的字符串将变为一个元素的数组。否则输入字符串将在每个分隔字符串处分开。
-
interval(N, N1, N2, N3 ... ) 描述:从输入的整数数组中,查找返回最后一个小于等于目标参数n的数组索引。如果n为NULL,返回-1。interval函数不支持interval(N, N1)的场景。该函数仅8.2.0及以上集群版本支持。 返回类型:int 示例: 1
2
3
4
5 SELECT INTERVAL(10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 11) AS RESULT;
result
--------
11
(1 row)
-
|| 描述:数组与数组进行连接。 示例: 1
2
3
4
5 SELECT ARRAY[1,2,3] || ARRAY[4,5,6] AS RESULT;
result
---------------
{1,2,3,4,5,6}
(1 row)
1
2
3
4
5 SELECT ARRAY[1,2,3] || ARRAY[[4,5,6],[7,8,9]] AS RESULT;
result
---------------------------
{{1,2,3},{4,5,6},{7,8,9}}
(1 row)
-
|| 描述:数组与数组进行连接。 示例: 1
2
3
4
5 gaussdb=# SELECT ARRAY[1,2,3] || ARRAY[4,5,6] AS RESULT;
result
---------------
{1,2,3,4,5,6}
(1 row)
1
2
3
4
5 gaussdb=# SELECT ARRAY[1,2,3] || ARRAY[[4,5,6],[7,8,9]] AS RESULT;
result
---------------------------
{{1,2,3},{4,5,6},{7,8,9}}
(1 row)
-
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_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的情况下被禁用。
-
array_extendnull(anyarray, int, int) 描述:往数组尾部添加指定个数的指定索引的元素。 返回类型:anyarray 示例: gaussdb=# SELECT array_extendnull(ARRAY[1,8,3,7],2,2) AS RESULT;
result
--------------
{1,8,3,7,8,8}
(1 row) array_extendnull(anyarray, int, int)此函数在参数a_format_version值为10c和a_format_dev_version值为s1的情况下有效。
-
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)
-
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)
在string_to_array中,如果分隔符参数是NULL,输入字符串中的每个字符将在结果数组中变成一个独立的元素。如果分隔符是一个空白字符串,则整个输入的字符串将变为一个元素的数组。否则输入字符串将在每个分隔字符串处分开。 在string_to_array中,如果省略NULL字符串参数或为NULL,将字符串中没有输入内容的子串替换为NULL。 在array_to_string中,如果省略NULL字符串参数或为NULL,运算中将跳过在数组中的任何NULL元素,并且不会在输出字符串中出现。
-
array_sort(anyarray) 描述:返回从小到大排列好的数组。只支持一维anyarray数组排序,多维数组返回NULL值。目前暂不支持record、xml、xmltype、json类型数组排序。 返回类型:anyarray 示例: 1
2
3
4
5
6
7
8
9
10 gaussdb=# SELECT array_sort(ARRAY[5,1,3,6,2,7]) AS RESULT;
result
-------------
{1,2,3,5,6,7}
(1 row)
gaussdb=# SELECT array_sort(array[array[1,23], array[1,34]]);
array_sort
-------------
{NULL,NULL}
(1 row)
-
array_positions(anyarray, anyelement) 描述:返回作为第一个参数给出的数组中所有出现的第二个参数的下标的数组。 返回类型:int[] 示例: gaussdb=# SELECT array_positions(array[1, 2, 3, 1], 1) AS RESULT;
result
--------
{1,4}
(1 row) 数组必须是一维的。 第二个参数可以设置为NULL。 如果数组中找不到第二个参数,返回空数组。