以下は、データ型として保存されるデータの例です 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は1Postgresの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配列とは異なります)。