Maison >base de données >tutoriel mysql >Comment puis-je facilement normaliser les indices de tableau PostgreSQL pour qu'ils commencent à 1 ?
Méthode simplifiée pour normaliser les indices des tableaux PostgreSQL
PostgreSQL permet aux indices de tableau de démarrer à partir de n'importe quelle valeur. Cependant, dans certains cas, il est nécessaire de normaliser un tableau unidimensionnel pour qu'il commence à l'index 1.
La solution précédente utilisait les fonctions array_lower()
et array_upper()
pour spécifier la plage d'indice souhaitée :
<code class="language-sql">SELECT ('[5:7]={1,2,3}'::int[])[array_lower('[5:7]={1,2,3}'::int[], 1):array_upper('[5:7]={1,2,3}'::int[], 1)]</code>
Bien que cette approche fonctionne, une solution plus élégante a émergé dans PostgreSQL 9.6. La documentation permet désormais d'omettre les limites inférieures et/ou supérieures des spécificateurs de tranche. En cas d'omission, les limites manquantes seront par défaut l'index de tableau le plus bas ou le plus élevé.
Avec cette fonctionnalité, le processus de normalisation devient assez simple :
<code class="language-sql">SELECT my_arr[:];</code>
Dans l'exemple fourni, les crochets garantissent que la syntaxe est claire :
<code class="language-sql">SELECT ('[5:7]={1,2,3}'::int[])[:];</code>
Cette solution optimisée fonctionne de manière similaire à la solution de la génération précédente, ce qui en fait la méthode préférée pour PostgreSQL 9.6 et versions ultérieures. Pour les anciennes versions (9.5 et antérieures), le codage en dur de l'indice maximum du tableau reste l'approche recommandée.
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!