如何在cassandra中查询!= null列。SELECT in cassandra where id!= null
Select * from tableA where id != null;
Select * from tableA where name != null;
然后,我想存储这些值,并将它们插入到不同的表中。
如何在cassandra中查询!= null列。SELECT in cassandra where id!= null
Select * from tableA where id != null;
Select * from tableA where name != null;
然后,我想存储这些值,并将它们插入到不同的表中。
我不认为这是可能的与卡桑德拉。首先,Cassandra CQL不支持在WHERE子句中使用NOT或不等于运算符。其次,你的WHERE子句只能包含主键列,主键列不允许插入空值。我不知道,虽然二级指标,所以我跑这个快速测试:
create table nullTest (id text PRIMARY KEY, name text);
INSERT INTO nullTest (id,name) VALUES ('1','bob');
INSERT INTO nullTest (id,name) VALUES ('2',null);
我现在有一张桌子和两行(一个空数据):
SELECT * FROM nullTest;
id | name
----+------
2 | null
1 | bob
(2 rows)
然后我试着在名称上创建一个二级索引,我知道它包含空值。
CREATE INDEX nullTestIdx ON nullTest(name);
它让我这样做。现在,我将对该索引运行查询。
SELECT * FROM nullTest WHERE name=null;
Bad Request: Unsupported null value for indexed column name
再次,这是你不能查询不为空,如果你甚至无法查询列值可能实际上是空的前提下完成的。
所以,我想这是不能做到的。另外,如果主键中有空值,那么您可能需要重新评估数据模型。再次,我知道OP的问题是关于查询哪里的数据是而不是 null。但正如我之前提到的,Cassandra CQL没有NOT或!=操作符,所以这会成为一个问题。
另一种选择是插入空字符串而不是空字符串。然后您将能够查询空字符串。但是,这仍然不能解决您在主键字段中存在空值的基本设计缺陷。也许如果你有一个复合主键,并且只有它的一部分(集群列)有可能被清空(当然不是分区键的一部分)。但是你仍然会遇到无法查询“非空”行(而不是空)的问题。
注意:插入空值仅用于演示目的。这是你应该尽量避免的事情,因为插入一个空列值将会创建一个墓碑。同样,插入大量空值将会创建很多墓碑。
1)select * from test;
name | id | address
------------------+----+------------------
bangalore | 3 | ramyam_lab
bangalore | 4 | bangalore_ramyam
bangalore | 5 | jasgdjgkj
prasad | 11 | null
prasad | 12 | null
india | 6 | karnata
india | 7 | karnata
ramyam-bangalore | 3 | jasgdjgkj
ramyam-bangalore | 5 | jasgdjgkj
2)卡桑德拉简化版,支持空值selection.It正显示出我们的理解空。
3),用于处理空值的使用,如“不可用”,“空”另一个字符串,那么我们可以选择数据
'其中id是null'? 'null'是数据库中的一个特殊值,具有传染性。任何使用null执行的操作都会“受到感染”,并且结果变得无效。你不能'null = null',并且必须使用特殊的'is null'语法。 –
将选择* from tableA where id = null; – user3780281
'其中id不为空'。 –