我可以将json_array_length与条件一起使用吗?



我有一个包含 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。

我该怎么做?

假设您的 JSON 数据具有常规架构,您可以将其转换为array(row(char_stars bigint, char_a1_lvl bigint)),并将filter与 lambda 表达式一起使用以选择与所需条件匹配的元素。

例如:

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;

相关内容

  • 没有找到相关文章