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

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

Linda Hamilton
Libérer: 2025-01-09 12:06:42
original
748 Les gens l'ont consulté

How Can I Efficiently Normalize PostgreSQL Array Subscripts to Start at 1?

Normalisation des indices de tableau PostgreSQL : à partir de 1

Les indices du tableau PostgreSQL peuvent commencer à partir de n'importe quelle valeur. Cependant, les opérations sur les tableaux peuvent être simplifiées en normalisant les indices des tableaux unidimensionnels pour qu'ils commencent à 1. Cet article explore une méthode de normalisation plus élégante introduite dans PostgreSQL version 9.6.

Dans les versions de PostgreSQL antérieures à 9.6, une approche consistait à utiliser les fonctions array_lower et array_upper pour spécifier une plage d'indice :

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

Cependant, à partir de PostgreSQL 9.6, une méthode plus simple et plus efficace a émergé : omettre les limites inférieure et supérieure du spécificateur de tranche. D'après le manuel :

<code>可以省略切片指定符的下限和/或上限;缺失的边界将被替换为数组下标的下限或上限。</code>
Copier après la connexion

Cela permet d'utiliser une syntaxe de normalisation concise :

<code class="language-sql">SELECT my_arr[:];</code>
Copier après la connexion

Par exemple, pour le tableau littéral '[5:7]={1,2,3}', vous pouvez utiliser :

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

Cette approche a des performances similaires à l'approche précédente consistant à utiliser des indices de tableau maximum codés en dur, mais elle est plus élégante et peut être utilisée avec des tableaux de n'importe quelle taille.

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!

source:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal