PostgreSQL动态SELECT最后一个json数组值

时间:2015-03-20 17:11:38

标签: json postgresql

如何动态SELECT PostgreSQL中JSON类型列中的最后一个数组值?

id: 2927
material_size: [".016 x 1.156","0","1"]

我可以使用:

静态检索最后一个值“1”
 SELECT material_size->>2 AS material_size FROM table_name;

然而,总是得到第二个记录而不是 last 记录(如果值的数量不是三个)。

2 个答案:

答案 0 :(得分:1)

您可以获取JSON数组的长度并使用它(减1)作为索引:

with t1 as (select 2927 id, '[".016 x 1.156","0","1"]'::json material_size)
select material_size->>(json_array_length(material_size)-1) from t1;

请参阅http://www.postgresql.org/docs/9.4/static/functions-json.html

答案 1 :(得分:1)

您可以使用否定索引从结尾查询JSON值中的元素:

 SELECT material_size->>-1 AS material_size FROM table_name;