我有一个要查询的JSON字段:
字段json_data的示例数据点如下:
apples=
[{"CHAR_STARS":1,"CHAR_A1_LVL":1},
{"CHAR_STARS":1,"CHAR_A1_LVL":2}]
我可以用json_array_length(json_data['apples'])
得到苹果的数量,在这种情况下,该数字返回2。
我只想计算CHAR_A1_LVL> 1的那些是什么?在这种情况下,它将返回1。
我该怎么做?
答案 0 :(得分:2)
假设您的JSON数据具有常规架构,则可以将其转换为array(row(char_stars bigint, char_a1_lvl bigint))
,并使用filter
和lambda expression来选择符合所需条件的元素。
例如:
WITH data(x) AS (
VALUES '[{"CHAR_STARS":1,"CHAR_A1_LVL":1}, {"CHAR_STARS":1,"CHAR_A1_LVL":2}]'
)
SELECT cardinality(
filter(
cast(json_parse(x) as array(row(char_stars bigint, char_a1_lvl bigint))),
r -> r.char_a1_lvl > 1))
FROM data;