如何使用 CQL 获取具有一个非空字符串的文本列的所有行?

How to get all rows with one text column which has not empty string using CQL?

我有一个名为 testTable 的 Cassandra Table:

create table testTable(
  col1 text primary key,
  col2 text
);

插入一些数据后,我想获取所有 col2 不为空的行。如:

select * from testTable where col2 <> null;

从CQL参考和其他google结果来看,没有很好的答案,不知道有没有人告诉我应该怎么做才能完成这个任务?

请参阅此 post 以详细解释为什么 Cassandra 无法做到这一点。 http://www.aaronstechcenter.com/null-query-cassandra.php

本质上,因为 col2 不是主键的一部分,所以您不能按此列进行过滤。 Cassandra 作为分布式哈希 table 工作,您可以在其中指定一个键并获取相关数据。这样,集群列中也不支持空值。

为了实现你想要的,你可以过滤结果数据集以检查 col2 在客户端中是否为 null 或使用类似 Spark 的东西,但这在 Cassandra 中不是一件有效的事情。

select * from testTable where col2>'' ALLOW FILTERING ;