Normalisation des plages d'indices de tableau dans PostgreSQL 9.6 et versions ultérieures
Les indices de tableau dans PostgreSQL peuvent démarrer à partir de n'importe quel index. Cependant, de nombreuses applications préfèrent les tableaux uniformément indexés commençant à 1. Cet article traite des méthodes de normalisation des tableaux unidimensionnels pour suivre cette convention.
Solutions existantes
Initialement, une solution complexe utilisant les fonctions array_lower
et array_upper
a été utilisée pour normaliser les indices. Ces méthodes, bien qu’efficaces, sont complexes et peu élégantes.
Simplification pour PostgreSQL 9.6
Avec la sortie de PostgreSQL 9.6 vient une solution plus simple. Le manuel décrit la possibilité d'omettre la limite inférieure et/ou supérieure du spécificateur de tranche, qui est alors par défaut l'indice minimum ou maximum du tableau.
Exemple
Pour normaliser un tableau littéral avec des indices non uniformes :
SELECT (my_arr[:]);
Dans notre exemple, les parenthèses sont nécessaires pour lever l'ambiguïté :
SELECT ('[5:7]={1,2,3}'::int[][:]);
Cette syntaxe simplifiée permet d'obtenir des performances similaires à celles des solutions antérieures. Pour les versions antérieures de PostgreSQL (9.5 ou antérieures), il est toujours recommandé d'utiliser array_lower
et array_upper
et un indice maximum fixe.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!