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

Array

更新時間:

3.1.1及以后版本的AnalyticDB for MySQL集群支持Array、Map數據類型。本文介紹了Array數據類型的定義、注意事項及使用示例。

Array類型定義

Array類型,存儲數組,可重復,含義類似Java中LIST。Array中數據為相同類型。例如,列A定義array<int>, 那么A中子元素均為int類型。支持嵌套,例如array<array<string>>

注意事項

Array或Map列不支持構建索引,因此,在SQL查詢語句中不建議直接過濾,需配合其他檢索條件過濾。盡量減少掃描數據量。

使用示例

  • 創建表

    • CREATE TABLE `array_test` (
       `a` INT,
       `b` ARRAY<INT>,
       `c` ARRAY<ARRAY<STRING>>,
       PRIMARY KEY (`a`)
      ) DISTRIBUTED BY HASH(`a`)
  • 寫入數據

    • 比如插入一行數據,其中b=[1,2,3], c=[["a"],["b","c"]]

      INSERT INTO array_test VALUES (1, '[1,2,3]', '[["a"],["b","c"]]');
  • 查詢數據

    • mysql> SELECT * FROM array_test;
      +------+---------+-------------------+
      | a    | b       | c                 |
      +------+---------+-------------------+
      |    1 | [1,2,3] | [["a"],["b","c"]] |
      +------+---------+-------------------+
      1 row in set (0.08 sec)
      重要
      • Array類型下標是從1開始,而不是0。

      • Array的取址操作:b[1]等價于函數element_at(b, 1)。

      mysql> SELECT a,b[1],element_at(b,1),c[2],element_at(c,2) FROM array_test;
      +------+------+-----------------+-----------+-----------------+
      | a    | b[1] | element_at(b,1) | c[2]      | element_at(c,2) |
      +------+------+-----------------+-----------+-----------------+
      |    1 |    1 |               1 | ["b","c"] | ["b","c"]       |
      +------+------+-----------------+-----------+-----------------+
      1 row in set (0.11 sec)

      查詢結果返回類型為Array或Map的列,以JSON格式字符串輸出。比如c[2]對應的是嵌套子列,類型為array<string>,那么以JSON格式返回。

支持的函數

函數

描述

返回類型

element_at

取值,下標從1開始,例如element_at(array[1,2], 1) ==> 1。

T

size

元素個數。

int

contains

是否包含子元素,例如contains(array[1,2], 2) ==> 1。

bool類型

array_max

取子元素最大值。

T

array_min

取子元素最小值。

T

array_position

取第一次出現的Index,例如 array_position(array['a','b','b'],'b') ==>2

int

array_remove

移除子元素,例如array_remove(array['a','b','b'],'b')==>['a']

array<T>

array_sort

排序,array_sort(array[3,2,1]) ==> [1,2,3]

array<T>

reverse

將數組中的子元素反轉,例如(array[5,9,3]) ==>[3,9,5]。

array<T>

shuffle

把數組中的元素按隨機順序重新排列,例如shuffle(array[1,5,8])==> [5,1,8]

array<T>

slice

截取子元素,例如array slice(array[1,2,3,4,5], 3,2) ==> [3,4]。

array<T>

concat

子元素合并且包含重復,例如concat(array[1], array[1,2]) ==>[1,1,2]。

array<T>

array_distinct

子元素去重,例如array_distinct(array[1,1,2]) ==>[1,2]。

array<T>

array_union

子元素合并且去重,例如array_union(array[1], array[1,2])==>[1,2] 。

array<T>

array_intersect

求交集,例如array_intersect(array[1], array[1,2]) ==>[1]

array<T>

array_join

類似Joiner拼接Array元素,例如array_join(array[1,2,3,4],'a') ==>1a2a3a4

string

flatten

降維,例如flatten(array[array[1,2],array[3]])==>[1,2,3]。

array<X>