You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ClickHouse中提取JSON数组list的首个元素?

在ClickHouse中提取JSON数组的第一个元素

你的foo列存储的是外层为数组、内部包含单个对象的JSON数据,要提取每个对象里list数组的第一个元素,有两种简洁的实现方式:

方法一:结合数组操作与JSON提取函数

通过逐层拆解JSON结构来获取目标值:

SELECT
    -- 先取出外层JSON数组的第一个对象
    arrayElement(foo, 1) AS target_obj,
    -- 从对象中提取list数组,再取第一个元素
    arrayElement(JSONExtract(target_obj, 'Array(String)', 'list'), 1) AS first_list_item
FROM your_table;

也可以直接嵌套写法,简化语句:

SELECT
    arrayElement(JSONExtract(arrayElement(foo, 1), 'Array(String)', 'list'), 1) AS first_list_item
FROM your_table;

方法二:使用JSONPath语法(推荐)

利用JSON_VALUE函数的JSONPath表达式,一步定位到目标元素,代码更简洁:

SELECT
    JSON_VALUE(foo, '$[0].list[0]') AS first_list_item
FROM your_table;

注意事项

如果你的foo列是字符串类型(不是ClickHouse的JSON类型),可以先通过parseJSON函数解析成JSON再操作:

SELECT
    JSON_VALUE(parseJSON(foo), '$[0].list[0]') AS first_list_item
FROM your_table;

内容的提问来源于stack exchange,提问作者Kay Jey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 12:01:02