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中文网其他相关文章!