如何动态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 记录(如果值的数量不是三个)。
答案 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;