首頁 >資料庫 >mysql教程 >如何輕鬆規範 PostgreSQL 陣列下標從 1 開始?

如何輕鬆規範 PostgreSQL 陣列下標從 1 開始?

DDD
DDD原創
2025-01-09 12:12:42347瀏覽

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

PostgreSQL陣列下標規範化的簡化方法

PostgreSQL允許陣列下標從任意值開始。然而,在某些情況下,需要將一維數組規範化為從下標1開始。

先前的解法使用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 class="language-sql">SELECT my_arr[:];</code>

在提供的範例中,括號確保語法明確:

<code class="language-sql">SELECT ('[5:7]={1,2,3}'::int[])[:];</code>

此最佳化後的解決方案與前代解決方案的效能相似,使其成為PostgreSQL 9.6及更高版本的首選方法。對於舊版本(9.5及更早版本),硬編碼最大陣列下標仍然是建議的方法。

以上是如何輕鬆規範 PostgreSQL 陣列下標從 1 開始?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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