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

如何重新規範 PostgreSQL 陣列下標從 1 開始?

Linda Hamilton
發布: 2025-01-09 12:03:56
原創
746 人瀏覽過

How to Renormalize PostgreSQL Array Subscripts to Start from 1?

調整 PostgreSQL 陣列索引從 1 開始

PostgreSQL 的彈性允許陣列的索引不從標準 1 開始。例如,以下數組的元素索引從 5 到 7:

SELECT '[5:7]={1,2,3}'::int[];
登入後複製

存取第一個元素需要使用索引 5:

SELECT ('[5:7]={1,2,3}'::int[])[5];
登入後複製

但是,許多使用者喜歡索引從 1 開始的陣列。以下是實現此目的的方法:

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)];
登入後複製

這會從最低索引到最高索引提取數組切片,從而有效地重置索引。

使用通用表表達式 (CTE) 的更具可讀性的方法:

WITH cte(a) AS (SELECT '[5:7]={1,2,3}'::int[])
SELECT a[array_lower(a, 1):array_upper(a, 1)]
FROM cte;
登入後複製

對於 PostgreSQL 9.6 及更高版本,有一個簡化的方法:省略切片規格中的下限和上限:

SELECT my_arr[:];
登入後複製

對於我們的範例,括號提高了可讀性:

SELECT ( '[5:7]={1,2,3}'::int[] )[:];
登入後複製

這種方法非常高效,即使在 9.6 之前的 Postgres 版本中也能正常運作。

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

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板