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

ClickHouse中JSON字段不存在的键返回0,如何过滤出指定键存在的记录?

解决ClickHouse JSON字段过滤存在指定键记录的问题

在ClickHouse v23中,要过滤出JSON字段中真实存在指定键的记录,可通过以下方式实现:

核心思路

利用has函数判断JSON字段是否包含目标键,再通过WHERE子句过滤出符合条件的记录,最后提取对应键的值。

具体查询语句

结合你插入的数据,若需求是过滤出存在d键的记录并获取其对应的值,执行以下查询:

SELECT b.d
FROM tb
WHERE has(b, 'd')

执行后得到结果:

┌─b.d─┐
│   1 │
└─────┘

补充说明

  • has(json_column, 'key'):专门用于检查JSON类型字段中是否存在指定键,存在返回1,不存在返回0。
  • 若你实际需要的是保留存在d键的记录但提取b.c的值,可执行:
SELECT b.c
FROM tb
WHERE has(b, 'd')

但该记录本身无c键,结果会返回0,与你给出的预期结果不符,推测你可能存在笔误,实际目标应为提取d键的值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 17:18:16