如何在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不爲空'。 –