如何在SQL中移除数组的首尾元素?(数组长度动态未知)
移除PostgreSQL数组最后一个元素的最简方法
你已经掌握了用切片语法[2:]移除数组第一个元素的方法,针对长度动态、编译时未知的数组,移除最后一个元素的最简方式如下:
方法1:使用负索引切片(PostgreSQL 9.5+)
PostgreSQL 9.5及以上版本支持负索引,直接通过[:-1]即可截取数组到倒数第二个元素,自动适配任意长度的数组:
SELECT (ARRAY[1,2,3])[:-1];
执行结果:
| {1,2} |
方法2:兼容旧版本(PostgreSQL <9.5)
如果你的PostgreSQL版本不支持负索引,可以结合array_length函数动态获取数组长度,再做切片:
SELECT arr[:array_length(arr, 1)-1] FROM (SELECT ARRAY[1,2,3,4] AS arr) t;
执行结果:
| {1,2,3} |
两种方法都无需提前知晓数组长度,完全适配动态场景。
内容的提问来源于stack exchange,提问作者Ludovic Aubert
相关产品推荐
相关产品推荐

