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

能否通过CQL查询返回布尔值,判断集合是否包含特定值?

在Cassandra中用CQL返回布尔值验证集合是否包含特定值

要实现根据Id判断对应集合是否包含指定值并返回布尔结果,有两种可行的方案:

1. 使用CASE表达式(兼容多数Cassandra版本)

这是适配Cassandra 3.x及以上版本的通用写法,通过CASE语句将集合包含条件转换为布尔值返回:

SELECT
  CASE WHEN Roles CONTAINS 'Pilot' THEN true ELSE false END AS has_pilot
FROM Test
WHERE Id = '123';

执行后会得到一列名为has_pilot的结果,值为true或false,对应Roles集合是否包含Pilot。

2. 使用contains()内置函数(Cassandra 4.0及以上)

如果你的Cassandra版本是4.0或更高,可以直接用内置的contains()函数,写法更简洁:

SELECT contains(Roles, 'Pilot') AS has_pilot FROM Test WHERE Id = '123';

该函数会直接返回布尔值,结果和CASE表达式的方式完全一致。

补充说明

你之前尝试的SELECT Roles CONTAINS 'Pilot'语法无效,是因为CQL的SELECT子句不允许直接写条件表达式,必须通过CASE包装或调用内置函数,将条件转换为可返回的列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 00:40:41