PostgreSQL数组下标规范化:从1开始
PostgreSQL数组的下标可以从任意值开始。然而,将一维数组的下标规范化为从1开始,可以简化数组操作。本文探讨PostgreSQL 9.6版本中引入的一种更优雅的规范化方法。
在PostgreSQL 9.6之前的版本中,一种方法是使用array_lower
和array_upper
函数来指定下标范围:
<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>
但是,从PostgreSQL 9.6开始,一种更简单、更高效的方法出现了:省略切片指定符的下限和上限。根据手册:
<code>可以省略切片指定符的下限和/或上限;缺失的边界将被替换为数组下标的下限或上限。</code>
这允许使用简洁的规范化语法:
<code class="language-sql">SELECT my_arr[:];</code>
例如,对于数组字面量'[5:7]={1,2,3}'
,可以使用:
<code class="language-sql">SELECT ('[5:7]={1,2,3}'::int[])[:];</code>
这种方法与之前使用硬编码最大数组下标的方法性能相似,但它更优雅,并且可以用于任何大小的数组。
以上是如何有效地将 PostgreSQL 数组下标标准化为从 1 开始?的详细内容。更多信息请关注PHP中文网其他相关文章!