PostgreSQLLa base de données la plus sophistiquée au monde.

9.17. Fonctions et opérateurs de tableaux

Le Tableau 9.40, « Opérateurs pour les tableaux » présente les opérateurs disponibles pour les types tableaux.

Tableau 9.40. Opérateurs pour les tableaux

Opérateur Description Exemple Résultat
= égal à ARRAY[1.1,2.1,3.1]::int[] = ARRAY[1,2,3] t
<> différent de ARRAY[1,2,3] <> ARRAY[1,2,4] t
< inférieur à ARRAY[1,2,3] < ARRAY[1,2,4] t
> supérieur à ARRAY[1,4,3] > ARRAY[1,2,4] t
<= inférieur ou égal à ARRAY[1,2,3] <= ARRAY[1,2,3] t
>= supérieur ou égal à ARRAY[1,4,3] >= ARRAY[1,4,3] t
@> contient ARRAY[1,4,3] @> ARRAY[3,1] t
<@ est contenu par ARRAY[2,7] <@ ARRAY[1,7,4,2,6] t
&& se chevauchent (ont des éléments en commun) ARRAY[1,4,3] && ARRAY[2,1] t
|| concaténation de tableaux ARRAY[1,2,3] || ARRAY[4,5,6] {1,2,3,4,5,6}
|| concaténation de tableaux ARRAY[1,2,3] || ARRAY[[4,5,6],[7,8,9]] {{1,2,3},{4,5,6},{7,8,9}}
|| concaténation d'un élément avec un tableau 3 || ARRAY[4,5,6] {3,4,5,6}
|| concaténation d'un tableau avec un élément ARRAY[4,5,6] || 7 {4,5,6,7}

Les comparaisons de tableaux comparent les contenus des tableaux élément par élément, en utilisant la fonction de comparaison par défaut du B-Tree pour le type de données de l'élément. Dans les tableaux multi-dimensionnels, les éléments sont visités dans l'ordre des colonnes (« row-major order », le dernier indice varie le plus rapidement). Si le contenu de deux tableaux est identique mais que les dimensions sont différentes, la première différence dans l'information de dimension détermine l'ordre de tri. (Ce fonctionnement diffère de celui des versions de PostgreSQL™ antérieures à la 8.2 : les anciennes versions indiquent que deux tableaux de même contenu sont identiques même si le nombre de dimensions ou les échelles d'indices diffèrent.)

Voir la Section 8.14, « Tableaux » pour plus de détails sur le comportement des opérateurs.

Le Tableau 9.41, « Fonctions pour les tableaux » présente les fonctions utilisables avec des types tableaux. Voir la Section 8.14, « Tableaux » pour plus d'informations et des exemples d'utilisation de ces fonctions.

Tableau 9.41. Fonctions pour les tableaux

Fonction Type de retour Description Exemple Résultat
array_append (anyarray, anyelement) anyarray ajoute un élément à la fin d'un tableau array_append(ARRAY[1,2], 3) {1,2,3}
array_cat (anyarray, anyarray) anyarray concatène deux tableaux array_cat(ARRAY[1,2,3], ARRAY[4,5]) {1,2,3,4,5}
array_ndims(anyarray) int renvoit le nombre de dimensions du tableau array_ndims(ARRAY[[1,2,3], [4,5,6]]) 2
array_dims (anyarray) text renvoie une représentation textuelle des dimensions d'un tableau array_dims(array[[1,2,3], [4,5,6]]) [1:2][1:3]
array_fill(anyelement, int[], [, int[]]) anyarray renvoit un tableau initialisé avec une valeur et des dimensions fournies, en option avec des limites basses autre que 1 array_fill(7, ARRAY[3], ARRAY[2]) [2:4]={7,7,7}
array_length(anyarray, int) int renvoit la longueur de la dimension du tableau array_length(array[1,2,3], 1) 3
array_lower (anyarray, int) int renvoie la limite inférieure du tableau donné array_lower('[0:2]={1,2,3}'::int[], 1) 0
array_prepend (anyelement, anyarray) anyarray ajoute un élément au début d'un tableau array_prepend(1, ARRAY[2,3]) {1,2,3}
array_to_string (anyarray, text) text concatène des éléments de tableau en utilisant le délimiteur fourni array_to_string(array[1, 2, 3], '~^~') 1~^~2~^~3
array_upper (anyarray, int) int renvoie la limite supérieure du tableau donné array_upper(ARRAY[1,2,3,4], 1) 4
string_to_array (text, text) text[] divise une chaîne en tableau d'éléments en utilisant le délimiteur fourni string_to_array( 'xx~^~yy~^~zz', '~^~') {xx,yy,zz}
unnest(anyarray) setof anyelement étend un tableau à un ensemble de lignes unnest(ARRAY[1,2]) 1

2

(2 rows)

Voir aussi Section 9.18, « Fonctions d'agrégat » à propose la fonction d'agrégat array_agg à utiliser avec les tableaux.