LIKE
條件允許我們在SQL語句的where子句中使用通配符。這允許我們執行模式匹配。 LIKE
條件可用於任何有效的SQL語句 - 選擇,插入,更新或刪除。像這樣是否有與Cassandra相同的查詢:LIKE Condition?
SELECT * FROM users
WHERE user_name like 'babu%';
與上面的操作相同,任何查詢都可用於CLI中的Cassandra。
LIKE
條件允許我們在SQL語句的where子句中使用通配符。這允許我們執行模式匹配。 LIKE
條件可用於任何有效的SQL語句 - 選擇,插入,更新或刪除。像這樣是否有與Cassandra相同的查詢:LIKE Condition?
SELECT * FROM users
WHERE user_name like 'babu%';
與上面的操作相同,任何查詢都可用於CLI中的Cassandra。
答案很簡單:沒有的相當於LIKE
http://www.datastax.com/docs/0.8/dml/using_cql
下面是V0.8命令參考:
http://www.datastax.com/docs/0.8/references/cql#cql-reference
如果您維護另一組列持有對用戶名的引用:
row :username:bab - > col:babu1,col:babar row:用戶名:babu - > col:babur
實際上,您通過預先填充您通常在RDBMS世界中搜索的所有結果。與多年前相比,存儲價格便宜......這就是爲什麼現在這是一種被接受的方法。 CPU和內存的密集程度較低,以檢索預先填充的信息列表。
我不會將此答案標記爲已接受。實際上,如果要篩選的列是一個集羣鍵,則LIKE'something%'會被替換爲: SELECT * FROM users WHERE user_name <='babu'AND user_name>'babv';請參閱@ PhilippBlum的回答 – Yahor 2016-12-06 15:27:43
我知道:這是一個老問題,但對於這個話題的解決方案:
不能使用像Cassandra的運營商,但你可以使用範圍經營,並與範圍運算符可以解決這個「像'whatever%'「
舉例: 我有多個產品。每個產品都有自己的分區鍵(主鍵的第一部分):
CREATE TABLE user(productId int, username text, PRIMARY KEY(productId, username));
現在我有一些用戶:
INSERT INTO user(productId, username) VALUES (1, 'anna');
INSERT INTO user(productId, username) VALUES (1, 'alpha');
INSERT INTO user(productId, username) VALUES (1, 'andreas');
INSERT INTO user(productId, username) VALUES (1, 'alex');
INSERT INTO user(productId, username) VALUES (1, 'bernd');
INSERT INTO user(productId, username) VALUES (1, 'bob');
現在,我想找到這在有一個所有用戶開始。在SQL的世界,我在卡桑德拉使用LIKE 'A%' 我用這個:
SELECT * FROM user WHERE productId = 1 AND username > 'a' AND username < 'b';
結果:
productid | username
-----------+----------
1 | alex
1 | alpha
1 | andreas
1 | anna
但是,此解決方案不能用於更長的字符串 – 2016-07-21 07:46:10
@Mayerz多久? – 2016-07-21 08:57:57
如果我想查詞,我應該怎麼做?我想這個解決方案不好吧? – 2016-07-21 10:46:22
由於卡桑德拉3.4(3.5推薦),如查詢可以使用的SSTable來實現附加二級指數(SASI)。
例如:
CREATE TABLE cycling.cyclist_name (
id UUID PRIMARY KEY,
lastname text,
firstname text
);
創建SASI如下:
CREATE CUSTOM INDEX fn_prefix ON cyclist_name (firstname)
USING 'org.apache.cassandra.index.sasi.SASIIndex';
然後前綴LIKE查詢工作:
SELECT * FROM cyclist_name WHERE firstname LIKE 'M%';
SELECT * FROM cyclist_name WHERE firstname LIKE 'Mic%';
這些實施例和更多的配置選項,如後綴查詢,可以在documentation
關於SASI如何工作的更深入的解釋可以找到here。
sdolgy是對的。或者,看看solandra或DSE。 – phact 2015-04-23 03:25:35