sql 陣列三 展平陣列

2021-10-08 08:37:40 字數 1709 閱讀 7678

展平陣列

如需將 array 轉換為一組行(即執行展平操作),請使用 unnest 運算子。unnest 獲取乙個 array,然後返回乙個表,array 中的每個元素均佔該錶的一行。

由於 unnest 破壞了 array 元素的順序,您可能需要恢復表中的順序。為此,請使用可選的 with offset 子句返回另乙個包含各陣列元素偏移量的列,然後使用 order by 子句按偏移量對行進行排序。

示例

select *

from unnest(['foo', 'bar', 'baz', 'qux', 'corge', 'garply', 'waldo', 'fred'])

as element

with offset as offset

order by offset;

+----------+--------+

| element | offset |

+----------+--------+

| foo | 0 |

| bar | 1 |

| baz | 2 |

| qux | 3 |

| corge | 4 |

| garply | 5 |

| waldo | 6 |

| fred | 7 |

+----------+--------+

with sequences as

(select 1 as id, [0, 1, 1, 2, 3, 5] as some_numbers

union all select 2 as id, [2, 4, 8, 16, 32] as some_numbers

union all select 3 as id, [5, 10] as some_numbers)

select id, flattened_numbers

from sequences, sequences.some_numbers as flattened_numbers;

+------+-------------------+

| id | flattened_numbers |

+------+-------------------+

| 1 | 0 |

| 1 | 1 |

| 1 | 1 |

| 1 | 2 |

| 1 | 3 |

| 1 | 5 |

| 2 | 2 |

| 2 | 4 |

| 2 | 8 |

| 2 | 16 |

| 2 | 32 |

| 3 | 5 |

| 3 | 10 |

+------+-------------------+

實現乙個可控深度的展平陣列函式(阿里筆試)

陣列是可多層巢狀,給定乙個陣列預設展開層數為1 陣列按照輸入層數展開,需要將改方法變為陣列的原型方法,實現的demo如下 var arr1 1,2,3 console.log arr1.flatarr 1,2,3 var arr2 1,2,3,4 console.log arr2.flatarr 1...

js巢狀陣列展平和判斷陣列方法

1.instanceoffunction isarray arr instanceof 只能用來判斷兩個物件是否屬於例項關係,而不能判斷乙個物件例項具體屬於哪種型別。其中的缺陷就是 instanceof對於frame跨域會有問題 2.constructorfunction isarray arr 函...

三 陣列 PHP全域性陣列

php全域性陣列 php全域性陣列 1.server全域性陣列 3.cookie全域性陣列 4.env全域性陣列 echo echo 獲取伺服器名稱 env hostname echo 獲取系統shell env shell 5.request全域性陣列 6.session全域性陣列 7.files...