Documentation PostgreSQL 9.1.24 > Langage SQL > Fonctions et opérateurs > Fonctions et opérateurs de tableaux | |
Expressions conditionnelles | Fonctions d'agrégat |
Le Tableau 9.41, « Opérateurs pour les tableaux » présente les opérateurs disponibles pour les types tableaux.
Tableau 9.41. 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.42, « 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.42. 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 | renvoie 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 | renvoie 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 | renvoie 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]) | text | concatène des éléments de tableau en utilisant le délimiteur fourni et une chaîne nulle optionnelle | array_to_string(ARRAY[1, 2, 3, NULL, 5], ',', '*') | 1,2,3,*,5 |
array_upper (anyarray, int) | int | renvoie la limite supérieure du tableau donné | array_upper(ARRAY[1,8,3,7], 1) | 4 |
string_to_array(text, text [, text]) | text[] | divise une chaîne en tableau d'éléments en utilisant le délimiteur fourni et la chaîne nulle optionnelle | string_to_array('xx~^~yy~^~zz', '~^~', 'yy') | {xx,NULL,zz} |
unnest(anyarray) | setof anyelement | étend un tableau à un ensemble de lignes | unnest(ARRAY[1,2]) |
1 2(2 rows) |
Dans string_to_array, si le délimiteur vaut NULL, chaque caractère de la chaîne en entrée deviendra un élément séparé dans le tableau résultant. Si le délimiteur est une chaîne vide, alors la chaîne entière est renvoyée dans un tableau à un élément. Dans les autres cas, la chaîne en entrée est divisée à chaque occurence du délimiteur.
Dans string_to_array, si le paramètre chaîne_null est omis ou vaut NULL, aucune des sous-chaînes en entrée ne sera remplacée par NULL. Dans array_to_string, si le paramètre chaîne_null est omis ou vaut NULL, tous les éléments NULL du tableau seront simplement ignorés et non représentés dans la chaîne en sortie.
Il existe deux différences dans le comportement de string_to_array avec les versions de PostgreSQL™ antérieures à la 9.1. Tout d'abord, il renverra un tableau vide (à zéro élément) plutôt que NULL quand la chaîne en entrée est de taille zéro. Ensuite, si le délimiteur vaut NULL, la fonction divise l'entrée en caractères individuels plutôt que de renvoyer NULL comme avant.
Voir aussi Section 9.18, « Fonctions d'agrégat » à propose la fonction d'agrégat array_agg à utiliser avec les tableaux.