PostgreSQL 9.6 及更高版本中數組下標範圍的規範化
PostgreSQL 中的陣列下標可以從任意索引開始。但是,許多應用程式更喜歡從 1 開始的統一下標數組。本文討論將一維數組規範化為遵循此約定的方法。
現有解
最初,使用 array_lower
和 array_upper
函數的複雜解法被用來規範下標。這些方法雖然有效,但複雜且不夠優雅。
PostgreSQL 9.6 的簡化
隨著 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.5 或更早版本),仍然建議使用 array_lower
和 array_upper
以及固定的最大下標。
以上是如何在 PostgreSQL 9.6 及更高版本中標準化陣列下標範圍?的詳細內容。更多資訊請關注PHP中文網其他相關文章!