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!