日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

數組(ARRAY)函數

Hologres兼容PostgreSQL,支持使用標準的PostgreSQL語法進行開發,本文為您介紹Hologres已支持的數組(ARRAY)函數列表及使用用例。

函數

功能

ARRAY_AGG

將一列的多行數據聚合成一個數組。

ARRAY_APPEND

添加元素至數組的尾部。

ARRAY_CAT

連接兩個數組。

ARRAY_CONTAINS

確認數組是否包含指定值。

ARRAY_DIMS

獲取數組文本類型的維度數。

ARRAY_DISTINCT

去除數組中的重復元素。

ARRAY_EXCEPT

獲取不包含指定數組元素的數組。

ARRAY_LENGTH

獲取請求的數組維度的長度。

ARRAY_LOWER

獲取請求的數組維度的下限。

ARRAY_MAX

獲取數組中所有數據的最大值,計算過程中會跳過NULL值。

ARRAY_MIN

獲取數組中所有數據的最小值。

ARRAY_NDIMS

獲取數組的維度數。

ARRAY_REMOVE

從數組中刪除所有等于指定值的元素(數組必須是一維的)。

ARRAY_POSITIONS

獲取數組(數組必須是一維的)中指定元素的下標。

ARRAY_PREPEND

添加元素至數組的首位。

ARRAY_SORT

對數組元素進行排序。

ARRAY_TO_STRING

使用提供的分隔符連接數組元素,如果數組中有NULL元素,可以自定義如何表示數組中的NULL值。

ARRAY_UNION

將兩個數組聚合為一個新的數組,且不含重復元素。

ARRAY_UPPER

獲取請求的數組維度的上限。

REGEXP_MATCH

對字符串按正則表達式進行匹配,如果存在則會在結果數組中表示出來。

REGEXP_SPLIT_TO_ARRAY

字符串分割函數,按正則表達式對字符串進行分割并轉換成數組。

UNNEST

將數組的每個元素擴展為單獨行。

使用限制

array_maxarray_minarray_contains、array_except、array_distinct、array_union函數暫不支持常量查詢,例如:SELECT array_max(ARRAY[-2, NULL, -3, -12, -7]);

數組(Array)函數

ARRAY_TO_STRING

  • 描述:使用提供的分隔符連接數組元素,如果數組中有NULL元素,可以自定義如何表示數組中的NULL值。

    array_to_string(anyarray, text[, text])
  • 返回值說明

    返回TEXT類型。

  • 示例

    --返回結果:1,2,3
    SELECT array_to_string(ARRAY[1, 2, 3], ',')

ARRAY_AGG

  • 描述:將一列的多行數據聚合成一個數組。

    • 方式一:

      array_agg(anyelement)

      使用說明:

      • 僅HologresV1.3及以上版本支持DECIMAL、DATE、TIMESTAMP、TIMESTAMPTZ數據類型。

        說明

        若您Hologres實例的版本較低,請您使用實例升級或加入Hologres釘釘交流群反饋,詳情請參見如何獲取更多的在線支持?

      • 暫不支持JSON、JSONB、TIMETZ、INTERVAL、INET、OID、UUID和ARRAY類型。

    • 方式二:

      array_agg (expression[ order_by_clause ] ) [ FILTER ( WHERE filter_clause ) ]

      使用說明:

      僅HologresV1.3及以上版本支持FILTER過濾。

      說明

      若您Hologres實例的版本較低,請您使用實例升級或加入Hologres釘釘交流群反饋,詳情請參見如何獲取更多的在線支持?。

  • 返回值說明

    返回ARRAY類型。

  • 示例

    • 示例1(array_agg(anyelement)

      CREATE TABLE test_array_agg_int (
          c1 int
      );
      
      INSERT INTO test_array_agg_int
          VALUES (1), (2);
      
      SELECT
          array_agg (c1)
      FROM
          test_array_agg_int;

      返回結果如下。

       array_agg
      -----------
       {2,1}
      (1 row)
    • 示例2(FILTER):

      CREATE TABLE test_array_agg_int (
          c1 int
      );
      
      INSERT INTO test_array_agg_int
          VALUES (1), (2);
      
      SELECT
          array_agg (c1) filter (where c1 >1)
      FROM
          test_array_agg_int;

      返回結果如下。

       array_agg
      -----------
       {2}
      (1 row)

ARRAY_APPEND

  • 描述:添加元素至數組的尾部。

    array_append(anyarray, anyelement)
  • 返回值說明

    返回ARRAY類型。

  • 示例

    --返回結果:{1,2,3}
    SELECT array_append(ARRAY[1,2], 3);

ARRAY_CAT

  • 描述:連接兩個數組。

    array_cat(anyarray,anyarray)
  • 返回值說明

    返回ARRAY類型。

  • 示例

    --返回結果:{1,2,3,4,5}
    SELECT array_cat(ARRAY[1,2,3], ARRAY[4,5]);

ARRAY_NDIMS

  • 描述:獲取數組的維度數。

    array_ndims(anyarray)
  • 返回值說明

    返回INT類型。

  • 示例

    --返回結果:2
    SELECT array_ndims(ARRAY[[1,2,3], [4,5,6]]);

ARRAY_DIMS

  • 描述:獲取數組文本類型的維度數。

    array_dims(anyarray)
  • 返回值說明

    返回TEXT類型。

  • 示例

    --返回結果:[1:2][1:3]
    SELECT array_dims(ARRAY[[1,2,3], [4,5,6]]);

ARRAY_LENGTH

  • 描述:獲取請求的數組維度的長度。

    array_length(anyarray, int)
  • 返回值說明

    返回INT類型。

  • 示例

    --返回結果:3
    SELECT array_length(ARRAY[1,2,3], 1);

ARRAY_LOWER

  • 描述:獲取請求的數組維度的下限。

    array_lower(anyarray, int)	
  • 返回值說明

    返回INT類型。

  • 示例

    --返回結果:0
    SELECT array_lower('[0:2]={1,2,3}'::int[], 1);

ARRAY_POSITIONS

  • 描述:獲取數組(數組必須是一維的)中指定元素的下標。

    array_positions(anyarray, anyelement)
  • 返回值說明

    返回ARRAY類型。

  • 示例

    --返回結果:{1,2,4}
    SELECT array_positions(ARRAY['A','A','B','A'], 'A');

ARRAY_PREPEND

  • 描述:添加元素至數組的首位。

    array_prepend(anyelement, anyarray)
  • 返回值說明

    返回ARRAY類型。

  • 示例

    --返回結果:{1,2,3}
    SELECT array_prepend(1, ARRAY[2,3]);

ARRAY_REMOVE

  • 描述:從數組中刪除所有等于指定值的元素(數組必須是一維的)。

    array_remove(anyarray, anyelement)
  • 返回值說明

    返回ARRAY類型。

  • 示例

    --返回結果:{1,3}
    SELECT array_remove(ARRAY[1,2,3,2], 2);

ARRAY_SORT

  • 描述:對數組元素進行排序。

    array_sort(anyarray)

    使用說明:

    • Hologres從V1.1.46版本開始支持TEXT類型數組,且TEXT數組將會被轉為INT8數組進行排序,返回排序后的TEXT數組。

    • Hologres從V1.3.18版本開始支持INT4、INT8、FLOAT4、FLOAT8、BOOLEAN類型數組,且對TEXT類型數組按字典序排序。

  • 返回值說明

    返回ARRAY類型。

  • 示例

    --返回結果:{1,1,2,3}
    SELECT array_sort(ARRAY[1,3,2,1]);

ARRAY_UPPER

  • 描述:獲取請求的數組維度的上限。

    array_upper(anyarray, int)
  • 返回值說明

    返回INT類型。

  • 示例

    --返回結果:4
    SELECT array_upper(ARRAY[1,8,3,7], 1);

UNNEST

  • 描述:將數組的每個元素擴展為單獨行。

    unnest(anyarray)
  • 返回值說明

    返回TEXT類型。

  • 示例

    SELECT unnest(ARRAY[1,2]);

    返回結果如下。

    unnest
    ------
    1
    2
    (2 rows)

ARRAY_MAX

  • 描述:獲取數組中所有數據的最大值,計算過程中會跳過NULL值。

    array_max(array)

    使用說明:

    僅Hologres V1.3.19及以上版本支持該函數。

    說明

    若您Hologres實例的版本較低,請您使用實例升級或加入Hologres釘釘交流群反饋,詳情請參見如何獲取更多的在線支持?

  • 返回值說明

    返回INT類型。

  • 示例

    CREATE TABLE test_array_max_int (
        c1 int[]
    );
    
    INSERT INTO test_array_max_int
        VALUES (NULL), (ARRAY[-2, NULL, -3, -12, -7]);
    
    SELECT
        c1,
        array_max (c1)
    FROM
        test_array_max_int;

    返回結果如下。

            c1        | array_max
    ------------------+-----------
     \N               |\N
     {-2,0,-3,-12,-7} |         0
    (2 rows)

ARRAY_MIN

  • 描述:獲取數組中所有數據的最小值。

    array_min(array)

    使用說明:

    僅Hologres V1.3.19及以上版本支持該函數。

    說明

    若您Hologres實例的版本較低,請您使用實例升級或加入Hologres釘釘交流群反饋,詳情請參見如何獲取更多的在線支持?。

  • 返回值說明

    返回INT類型。

  • 示例

    CREATE TABLE test_array_min_text (
        c1 text[]
    );
    
    INSERT INTO test_array_min_text
        VALUES (NULL), (ARRAY['hello', 'holo', 'blackhole', 'array']);
    
    SELECT
        c1,
        array_min (c1)
    FROM
        test_array_min_text;

    返回結果如下。

                  c1              | array_min
    ------------------------------+-----------
     \N                           |\N
     {hello,holo,blackhole,array} | array
    (2 rows)

ARRAY_CONTAINS

  • 描述:確認數組是否包含指定值。

    array_contains(array, target_value)

    使用說明:

    僅Hologres V1.3.19及以上版本支持該函數。

    說明

    若您Hologres實例的版本較低,請您使用實例升級或加入Hologres釘釘交流群反饋,詳情請參見如何獲取更多的在線支持?。

  • 返回值說明

    返回BOOLEAN類型,如果數組若包含指定值,則返回true,反之返回false。

  • 示例

    CREATE TABLE test_array_contains_text (
        c1 text[],
        c2 text
    );
    
    INSERT INTO test_array_contains_text
        VALUES (ARRAY[NULL, 'cs', 'holo', 'sql', 'a', NULL, ''], 'holo')
                    , (ARRAY['holo', 'array', 'FE', 'l', NULL, ''], 'function');
    
    SELECT
        c1,
        c2,
        array_contains (c1, c2)
    FROM
        test_array_contains_text;

    返回結果如下。

                c1            |    c2    | array_contains
    --------------------------+----------+----------------
     {holo,array,FE,l,"",""}  | function | f
     {"",cs,holo,sql,a,"",""} | holo     | t
    (2 rows)

ARRAY_EXCEPT

  • 描述:獲取不包含指定數組元素的數組。

    array_except(array1, array2)

    使用說明:

    僅Hologres V1.3.19及以上版本支持該函數。

    說明

    若您Hologres實例的版本較低,請您使用實例升級或加入Hologres釘釘交流群反饋,詳情請參見如何獲取更多的在線支持?

  • 返回值說明

    返回ARRAY類型。

  • 示例

    CREATE TABLE test_array_except_text (
        c1 text[],
        c2 text[]
    );
    
    INSERT INTO test_array_except_text
        VALUES (ARRAY['o', 'y', 'l', 'l', NULL, ''], NULL), (ARRAY['holo', 'hello', 'hello', 'SQL', '', 'blackhole'], ARRAY['holo', 'SQL', NULL, 'kk']);
    
    SELECT
        c1,
        c2,
        array_except (c1, c2)
    FROM
        test_array_except_text;

    返回結果如下。

                     c1                  |        c2        |   array_except
    -------------------------------------+------------------+-------------------
     {o,y,l,l,"",""}                     |                  | {o,l,y,""}
     {holo,hello,hello,SQL,"",blackhole} | {holo,SQL,"",kk} | {blackhole,hello}
    (2 rows)

ARRAY_DISTINCT

  • 描述:去除數組中的重復元素。

    array_distinct(array)

    使用說明:

    僅Hologres V1.3.19及以上版本支持該函數。

    說明

    若您Hologres實例的版本較低,請您使用實例升級或加入Hologres釘釘交流群反饋,詳情請參見如何獲取更多的在線支持?。

  • 返回值說明

    返回ARRAY類型。

  • 示例

    CREATE TABLE test_array_distinct_text (
        c1 text[]
    );
    
    INSERT INTO test_array_distinct_text
        VALUES (ARRAY['holo', 'hello', 'holo', 'SQL', 'SQL']), (ARRAY[]::text[]);
    
    SELECT
        c1,
        array_distinct (c1)
    FROM
        test_array_distinct_text;

    返回結果如下。

                c1             |  array_distinct
    ---------------------------+------------------
     {holo,hello,holo,SQL,SQL} | {SQL,hello,holo}
     {}                        | {NULL}
    (2 rows)

ARRAY_UNION

  • 描述:將兩個數組聚合為一個新的數組,且不含重復元素。

    array_union(array1, array2)

    使用說明:

    僅Hologres V1.3.19及以上版本支持該函數。

    說明

    若您Hologres實例的版本較低,請您使用實例升級或加入Hologres釘釘交流群反饋,詳情請參見如何獲取更多的在線支持?。

  • 返回值說明

    返回ARRAY類型。

  • 示例

    CREATE TABLE test_array_union_int (
        c1 int[],
        c2 int[]
    );
    
    INSERT INTO test_array_union_int
        VALUES (NULL, ARRAY[2, -3, 2, 7]), (ARRAY[2, 7, -3, 2, 7], ARRAY[12, 9, 8, 7]);
    
    SELECT
        c1,
        c2,
        array_union (c1, c2)
    FROM
        test_array_union_int;

    返回結果如下。

          c1      |     c2     |   array_union
    --------------+------------+-----------------
     \N           | {2,-3,2,7} | {2,7,-3}
     {2,7,-3,2,7} | {12,9,8,7} | {9,2,7,8,12,-3}
    (2 rows)

REGEXP_MATCH

  • 描述:對字符串按正則表達式進行匹配,如果存在則會在結果數組中表示出來。

    REGEXP_MATCH(<str> TEXT, <pattern> TEXT) 
  • 參數說明

    • str:必填,待匹配的字符串。

    • pattern:必填,正則表達式。

  • 返回值說明

    返回ARRAY類型。

  • 示例

    SELECT regexp_match('foobarbequebaz', '(bar)(beque)');

    返回結果如下。

    regexp_match
    ------------
    {bar,beque}

REGEXP_SPLIT_TO_ARRAY

  • 描述:字符串分割函數,按正則表達式對字符串進行分割并轉換成數組。

    REGEXP_SPLIT_TO_ARRAY(<str> TEXT, <pattern> TEXT)
  • 參數說明

    • str:必填,待分割的字符串。

    • pattern:必填,定義了如何分割字符串的正則表達式。正則表達式中的特殊字符和構造將用于識別字符串中需要作為分隔點的位置。

  • 返回值說明

    返回ARRAY類型。

  • 示例

    CREATE TABLE interests_test (
        name text,
        intrests text
    );
    
    INSERT INTO interests_test
        VALUES ('張三', '唱歌,跳舞'), ('李四', '踢球,跑步,畫畫'), ('王五', '插花,書法,彈琴,睡覺');
    
    SELECT
        name,
        REGEXP_SPLIT_TO_ARRAY(intrests, ',')
    FROM
        interests_test;
    

    返回結果如下。

    name | regexp_split_to_array
    ----------------------------
    張三 | {唱歌,跳舞}
    李四 | {踢球,跑步,畫畫}
    王五 | {插花,書法,彈琴,睡覺}

操作符

操作符

返回類型

描述

用例

結果

@>

BOOLEAN

判斷兩個數組是否為包含關系。

SELECT ARRAY[1,2,3] @> ARRAY[1,2];

t

<@

BOOLEAN

判斷兩個數組是否為被包含關系。

SELECT ARRAY[1,2,3] <@ ARRAY[1,2];

f

&&

BOOLEAN

判斷兩個數組是否有相同元素。

說明

Hologres從V1.3.37版本開始支持Array列作為輸入。

SELECT ARRAY[1,2,3] && ARRAY[1,2];

t