VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

数组函数和操作符

数组操作符

操作符 描述 例子
= 两个数组是否相等 ARRAY[1.1,2.1,3.1]::int[] = ARRAY[1,2,3]
<> 两个数组是否不相等 ARRAY[1,2,3] <> ARRAY[1,2,4]
< 一个数组是否小于另一个数组 ARRAY[1,2,3] < ARRAY[1,2,4]
> 一个数组是否大于另一个数组 ARRAY[1,4,3] > ARRAY[1,2,4]
<= 一个数组是否小于或等于另一个数组 ARRAY[1,2,3] <= ARRAY[1,2,3]
>= 一个数组是否大于或等于另一个数组 ARRAY[1,4,3] >= ARRAY[1,4,3]
@> 一个数组是否包含另一个数组 ARRAY[1,4,3] @> ARRAY[3,1]
<@ 一个数组是否被包含于另一个数组 ARRAY[2,7] <@ ARRAY[1,7,4,2,6]
&& 一个数组是否和另一个数组重叠(有共同元素) ARRAY[1,4,3] && ARRAY[2,1]
|| 数组与数组进行连接 ARRAY[1,2,3] || ARRAY[4,5,6]
|| 元素与数组进行连接 3 || ARRAY[4,5,6]
|| 数组与元素进行连接 ARRAY[4,5,6] || 7

数组比较是使用默认的B-tree比较函数对所有元素逐一进行比较的。多维数组的元素按照行顺序进行访问。如果两个数组的内容相同但维数不等,决定排序顺序的首要因素是维数。

数组函数

函数名 描述 返回类型
array_append(anyarray, anyelement) 向数组末尾添加元素,只支持一维数组。 anyarray
array_prepend(anyelement, anyarray) 向数组开头添加元素,只支持一维数组。 anyarray
array_cat(anyarray, anyarray) 连接两个数组,支持多维数组。 anyarray
array_ndims(anyarray) 返回数组的维数。 int
array_dims(anyarray) 返回数组各个维度中的低位下标值和高位下标值。 text
array_length(anyarray, int) 返回指定数组维度的长度。int为指定数组维度。 int
array_lower(anyarray, int) 返回指定数组维数的下界。int为指定数组维度。 int
array_upper(anyarray, int) 返回指定数组维数的上界。int为指定数组维度。 int
array_to_string(anyarray, text [, text]) 使用第一个text作为数组的新分隔符,使用第二个text替换数组值为null的值。 text
string_to_array(text, text [, text]) 使用第二个text指定分隔符,使用第三个可选的text作为NULL值替换模板,如果分隔后的子串与第三个可选的text完全匹配,则将其替换为NULL。 text[]
unnest(anyarray) 扩大一个数组为一组行。 setof anyelement
array_position(anyarray,anyelement,[,integer]) 实现在数组搜索元素,返回该元素在数组中第一次出现的下标 int
array_remove(anyarray, anyelement) 移除数组中的所有指定元素。仅支持一维数组。 anyarray
array_replace(anyarray,anyelement,anyelement) 指定数组中的元素进行替换。将数组中包含的第一个anyelement的值替换为第二个anyelement值。 anyarray
array_delete(anyarray) 清空数组中的元素并返回一个同类型的空数组。 anyarray

示例

  • array_append(anyarray, anyelement)

    select array_append(ARRAY[1,2], 3) AS RESULT;
    

    当结果显示如下信息,则表示函数调用成功。

    result  
    ---------
      {1,2,3}
    (1 row)
    
  • array_prepend(anyelement, anyarray)

    select array_prepend(1, ARRAY[2,3]) AS RESULT;
    

    当结果显示如下信息,则表示函数调用成功。

    result  
    ---------
      {1,2,3}
    (1 row)
    
  • array_cat(anyarray, anyarray)

    示例1:

    select array_cat(ARRAY[1,2,3], ARRAY[4,5]) AS RESULT;
    

    当结果显示如下信息,则表示函数调用成功。

    result    
    -------------
    {1,2,3,4,5}
    (1 row)
    

    示例2:

    select array_cat(ARRAY[[1,2],[4,5]], ARRAY[6,7]) AS RESULT;
    

    当结果显示如下信息,则表示函数调用成功。

    result        
    ---------------------
    {{1,2},{4,5},{6,7}}
    (1 row)
    
  • array_ndims(anyarray)

    select array_ndims(ARRAY[[1,2,3], [4,5,6]]) AS RESULT;
    

    当结果显示如下信息,则表示函数调用成功。

    result 
    --------
          2
    (1 row)
    
  • array_dims(anyarray)

    select array_dims(ARRAY[[1,2,3], [4,5,6]]) AS RESULT;
    

    当结果显示如下信息,则表示函数调用成功。

    result   
    ------------
      [1:2][1:3]
    (1 row)
    
  • array_length(anyarray, int)

    示例1:

    select array_length(array[1,2,3], 1) AS RESULT;
    

    当结果显示如下信息,则表示函数调用成功。

    result 
    --------
          3
    (1 row)
    

    示例2:

    select array_length(array[[1,2,3],[4,5,6]], 2) AS RESULT;
    

    当结果显示如下信息,则表示函数调用成功。

    result
    --------
            3
    (1 row)
    
  • array_lower(anyarray, int)

    select array_lower('[0:2]={1,2,3}'::int[], 1) AS RESULT;
    

    当结果显示如下信息,则表示函数调用成功。

    result 
    --------
            0
    (1 row)
    
  • array_upper(anyarray, int)

    select array_upper(ARRAY[1,8,3,7], 1) AS RESULT;
    

    当结果显示如下信息,则表示函数调用成功。

    result 
    --------
            4
    (1 row)
    
  • array_to_string(anyarray, text [, text])

    select array_to_string(ARRAY[1, 2, 3, NULL, 5], ',', '*') AS RESULT;
    

    当结果显示如下信息,则表示函数调用成功。

    result   
    -----------
      1,2,3,*,5
    (1 row)
    

    在array_to_string中,如果省略null字符串参数或为NULL,运算中将跳过在数组中的任何null元素,并且不会在输出字符串中出现。

  • string_to_array(text, text [, text])

    示例1:

    select string_to_array('xx~^~yy~^~zz', '~^~', 'yy') AS RESULT;
    

    当结果显示如下信息,则表示函数调用成功。

    result    
    --------------
      {xx,NULL,zz}
    (1 row)
    

    示例2:

    select string_to_array('xx~^~yy~^~zz', '~^~', 'y') AS RESULT;
    

    当结果显示如下信息,则表示函数调用成功:

      result   
      ------------
      {xx,yy,zz}
      (1 row)
    

    在string_to_array中,如果分隔符参数是NULL,输入字符串中的每个字符将在结果数组中变成一个独立的元素。如果分隔符是一个空白字符串,则整个输入的字符串将变为一个元素的数组。否则输入字符串将在每个分隔字符串处分开。如果省略null字符串参数或为NULL,将字符串中没有输入内容的子串替换为NULL。

  • unnest(anyarray)

    select unnest(ARRAY[1,2]) AS RESULT;
    

    当结果显示如下信息,则表示函数调用成功。

    result 
    --------
            1
            2
      (2 rows)
    
  • array_position(anyarray,anyelement,[,integer])

    SELECT array_position(array[1,4,2,5,7],2) AS RESULT;
    

    当结果显示如下信息,则表示函数调用成功。

    result 
    --------
            3
    (1 row)
    
  • array_remove(anyarray,anyelement)

    SELECT array_remove(ARRAY[1,8,8,7], 8) AS RESULT;
    

    当结果显示如下信息,则表示函数调用成功。

    result
    --------
    {1,7}
    (1 row)
    
  • array_replace(anyarray,anyelement,anyelement)

    SELECT array_replace(ARRAY[1,8,8,7],1,2) AS RESULT;
    

    当结果显示如下信息,则表示函数调用成功。

    result
    --------
    {2,8,8,7}
    (1 row)
    
  • array_delete(anyarray)

    SELECT array_delete(ARRAY[1,8,8,7]) AS RESULT;
    

    当结果显示如下信息,则表示函数调用成功。

    result
    --------
    {}
    (1 row)