CQL:无法检查“Where”子句中的检查

时间:2012-08-03 17:14:59

标签: cassandra cql

尝试返回特定字段为null或不为null的所有行。

select * from ADDRESS where addr1 = null;  

select * from ADDRESS where addr1 = 'NULL';  

addr1可以是布尔值或文本字段。

我已尝试!= nullis null<> nullisnull(addr1, 'NULL')

但我得到

no viable alternative at input '='

no index columns present in by-columns clause with "equals' operator"

使用Cassandra 1.1.1&amp; Java 1.7_05

2 个答案:

答案 0 :(得分:6)

CQL没有NULL的概念(还有 - 见CASSANDRA-3783)。正确的做法取决于您的具体情况。

答案 1 :(得分:0)

一种方法是使用 cqlsh 来选择所需的列 - 通常是主键和使用 -e 选项的感兴趣的列,并使用 grep 来识别空条目。在查询中也设置“分页关闭”以获取所有结果,否则默认情况下只会返回 100 行。

cqlsh -u -p -e "paging off;select * from ADDRESS where addr1 = null;" | grep null