Maison >base de données >tutoriel mysql >Comment puis-je normaliser les plages d'indices de tableau dans PostgreSQL 9.6 et versions ultérieures ?

Comment puis-je normaliser les plages d'indices de tableau dans PostgreSQL 9.6 et versions ultérieures ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-09 12:21:45192parcourir

How Can I Normalize Array Subscript Ranges in PostgreSQL 9.6 and Later?

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 :

<code class="language-sql">SELECT (my_arr[:]);</code>

Dans notre exemple, les parenthèses sont nécessaires pour lever l'ambiguïté :

<code class="language-sql">SELECT ('[5:7]={1,2,3}'::int[][:]);</code>

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!

Déclaration:
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