Maison > base de données > tutoriel mysql > Comment puis-je facilement normaliser les indices de tableau PostgreSQL pour qu'ils commencent à 1 ?

Comment puis-je facilement normaliser les indices de tableau PostgreSQL pour qu'ils commencent à 1 ?

DDD
Libérer: 2025-01-09 12:12:42
original
360 Les gens l'ont consulté

How Can I Easily Normalize PostgreSQL Array Subscripts to Start at 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 :

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)]
Copier après la connexion

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 :

SELECT my_arr[:];
Copier après la connexion

Dans l'exemple fourni, les crochets garantissent que la syntaxe est claire :

SELECT ('[5:7]={1,2,3}'::int[])[:];
Copier après la connexion

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal