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
Linda Hamiltonoriginal
2025-01-09 12:06:42772parcourir

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>

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>

Cela permet d'utiliser une syntaxe de normalisation concise :

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

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>

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!

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