首頁 >資料庫 >mysql教程 >如何有效地將 PostgreSQL 陣列下標標準化為從 1 開始?

如何有效地將 PostgreSQL 陣列下標標準化為從 1 開始?

Linda Hamilton
Linda Hamilton原創
2025-01-09 12:06:42700瀏覽

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

PostgreSQL陣列下標規範化:從1開始

PostgreSQL陣列的下標可以從任意值開始。然而,將一維數組的下標規範化為從1開始,可以簡化數組操作。本文探討PostgreSQL 9.6版本中引入的一種更優雅的規範化方法。

在PostgreSQL 9.6之前的版本中,一種方法是使用array_lowerarray_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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn