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

SQLite使用CASE配合json_array_length查询返回全NULL问题排查

问题原因

你误用了SQL中CASE表达式的两种语法格式:

  • 简单CASE表达式:语法为 CASE 对比值 WHEN 匹配值1 THEN 结果1 ... ELSE 默认结果 END,逻辑是将CASE后声明的对比值,依次和每个WHEN后的匹配值做等值比对,返回第一个匹配的结果。
  • 搜索CASE表达式:语法为 CASE WHEN 条件1 THEN 结果1 ... ELSE 默认结果 END,逻辑是依次判断每个WHEN后的条件是否成立,返回第一个成立条件对应的结果。

你当前的写法是在简单CASE表达式的位置传入了JSON类型的threads.participants字段作为对比值,而WHEN后的json_array_length(threads.participants) = 2返回的是布尔值,JSON数组和布尔值永远不可能相等,因此所有分支匹配逻辑失效,最终返回NULL。

修复方案

调整为搜索CASE表达式的写法即可,CASE后不需要加对比字段,直接写条件判断:

SELECT
  CASE
    WHEN json_array_length(threads.participants) = 2 THEN '2 Participants'
    ELSE 'More than 2 Participants' 
  END AS "Number of Participants"
FROM threads

额外优化提示:SQL标准中字符串常量建议使用单引号包裹,避免部分数据库将双引号识别为字段名标识符引发额外报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 18:54:03