以下是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)
答案 0 :(得分:2)
您可以通过执行(已知在Postgres 9.5 +中工作)获取Postgres JSON数组的最后一个元素:
select '...'::json->-1;
这使用->
运算符。负整数从最后算起。
例如:
select '[[1479772800000, 70.12], [1479859200000, 70.83], [1480032000000, 71.23]]'::json->-1;
答案 1 :(得分:1)
Postgres 9.5会更好,例如@Simeon provided。
您可以使用json_array_length()
in Postgres 9.4,因为->
operator不允许使用否定索引。
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);
-1
因为JSON数组索引是从0开始的(与基于1的Postgres数组不同)。