/ / JSON列タイプの配列の最後の要素を見つける-配列、json、postgresql

JSON列型の配列の最後の要素を見つける - 配列、json、postgresql

以下は、データ型として保存されるデータの例です json Postgres 9.4.4の場合:

[
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)

回答:

回答№1は1

PostgresのJSON配列の最後の要素を取得するには、次のようにします(Postgres 9.5以降で動作することが知られています):

select "..."::json->-1;

これは、 -> オペレーター。負の整数は末尾から数えます。

例えば:

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

回答№2の場合は1

次のようなPostgres 9.5が望ましい @Simeon提供.

あなたは使うことができます json_array_length() Postgres 9.4で 負のインデックスは許可されていないため -> オペレーター.

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配列とは異なります)。