Arrays 在JSON列类型中查找数组的最后一个元素
以下是Postgres 9.4.4中存储为数据类型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
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);