我的数据库有一个列,其中包含一个JSON数组,如下所示:
WITH dataset AS (
SELECT *
FROM (VALUES
('1', JSON'[{ "name" : "foo" }, { "name" : "bar" }]'),
('2', JSON'[{ "name" : "fizz" }, { "name" : "buzz" }]'),
('3', JSON'[{ "name" : "hello" }, { "name" : "world" }]')
) AS t(id, my_array)
)
我想从数组中的最后一个元素中 Select name
属性:
result |
---|
bar |
buzz |
world |
我可以很容易地 Select 第一个元素:
SELECT json_extract_scalar(my_array, '$[0].name') FROM dataset
这些try 对最后一个元素不起作用:
SELECT json_extract_scalar(my_array, '$[-1].name') FROM dataset
SELECT json_extract_scalar(my_array, '$[cardinality(json_parse(my_array)) - 1].name') FROM dataset
SELECT element_at(my_array, -1) FROM dataset
注意:我不能对JSON数组的长度做出任何假设.