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