2017-08-18 2 views
0

Gibt es eine Möglichkeit, mehrere Arrays in einem Array in Postgres zu verketten?Verketten mehrerer Arrays in Postgres

Zum Beispiel so etwas wie diese:

ARRAY_CAT(
    ARRAY_FILL(5, ARRAY[4]), 
    ARRAY_FILL(2, ARRAY[3]), 
    ARRAY_FILL(11, ARRAY[3]) 
) 

Für dieses Beispiel würde Ich mag eine Leistung von

[5,5,5,5,2,2,2,11,11,11] 

Antwort

3

Verwenden Sie die || concatenation operator

select 
    array_fill(5, array[4]) || 
    array_fill(2, array[3]) || 
    array_fill(11, array[3]) 
+0

Arbeiten wie ein Charme. Vielen Dank! –

0

Sie können es mit wiederholten Verkettungen sehen:

ARRAY_CAT(
    ARRAY_CAT(
    ARRAY_FILL(5, ARRAY[4]), 
    ARRAY_FILL(2, ARRAY[3]) 
), 
    ARRAY_FILL(11, ARRAY[3]) 
) 

Wie @Clodoaldo Neto darauf hingewiesen, können Sie auch den Operator || verwenden. Sie können aus diesen beiden frei wählen, aber denken Sie daran:

  • || können sich unterschiedlich verhalten, je nach Operandentypen. Dies kann zu Verwirrung führen. Wenn die beiden Operanden Array sind, ist || nur ein Alias ​​zu array_cat. (source)