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中文網其他相關文章!