Arrays 在JSON列类型中查找数组的最后一个元素

Arrays 在JSON列类型中查找数组的最后一个元素,arrays,json,postgresql,Arrays,Json,Postgresql,以下是Postgres 9.4.4中存储为数据类型json的数据示例: [ 1479772800000, 70.12 ], [ 1479859200000, 70.83 ], [ 1480032000000, 71.23 ] 如何选择此数组的最后一个元素:[1480032000000,71.23] \d stocks Table "public.stocks" Column

以下是Postgres 9.4.4中存储为数据类型
json
的数据示例:

[
  1479772800000,
  70.12
],
[
  1479859200000,
  70.83
],
[
  1480032000000,
  71.23
]
如何选择此数组的最后一个元素:
[1480032000000,71.23]

 \d stocks
                                     Table "public.stocks"
      Column      |         Type         |                      Modifiers                      
------------------+----------------------+-----------------------------------------------------
 id               | integer              | not null default nextval('stocks_id_seq'::regclass)
 ticker           | character varying(6) |  
 price_history    | json                 | 
Indexes:
    "stocks_pkey" PRIMARY KEY, btree (id)
    "ix_stocks_ticker" UNIQUE, btree (ticker)

您可以通过以下操作获得Postgres JSON数组的最后一个元素(已知可以在Postgres 9.5+中使用):

这将使用
->
运算符。负整数从末尾开始计数

例如:

select '[[1479772800000, 70.12], [1479859200000, 70.83], [1480032000000, 71.23]]'::json->-1;

博士后9.5分更好,比如

您可以使用,因为不允许使用负索引


-1
因为JSON数组索引是基于0的(不同于基于1的Postgres数组)。

我升级Postgres版本太晚了@JZ:这是正确的举措。但这并不能改变问题。
select '[[1479772800000, 70.12], [1479859200000, 70.83], [1480032000000, 71.23]]'::json->-1;
SELECT j -> -1                       AS pg95
     , j -> json_array_length(j) - 1 AS pg94
FROM (SELECT '[[1479772800000, 70.12]
             , [1479859200000, 70.83]
             , [1480032000000, 71.23]]'::json) t(j);