Bob*_*oid 24 sql cassandra pycassa
该LIKE条件允许我们在SQL语句的where子句中使用通配符.这允许我们执行模式匹配.该LIKE条件可用于任何有效的SQL语句 - 选择,插入,更新或删除.像这样
SELECT * FROM users
WHERE user_name like 'babu%';
Run Code Online (Sandbox Code Playgroud)
与上面相同的操作一样,任何查询都可以在CLI中用于Cassandra.
nst*_*low 26
自Cassandra 3.4(推荐3.5)以来,可以使用SSTable Attached Secondary Index(SASI)实现LIKE查询.
例如:
CREATE TABLE cycling.cyclist_name (
id UUID PRIMARY KEY,
lastname text,
firstname text
);
Run Code Online (Sandbox Code Playgroud)
创建SASI如下:
CREATE CUSTOM INDEX fn_prefix ON cyclist_name (firstname)
USING 'org.apache.cassandra.index.sasi.SASIIndex';
Run Code Online (Sandbox Code Playgroud)
然后前缀LIKE查询正在工作:
SELECT * FROM cyclist_name WHERE firstname LIKE 'M%';
SELECT * FROM cyclist_name WHERE firstname LIKE 'Mic%';
Run Code Online (Sandbox Code Playgroud)
这些示例和更多配置选项(如后缀查询)可以在文档中找到
有关SASI如何工作的更深入的解释可以在这里找到.
Cit*_*lin 16
我知道:这是一个老问题,但有一个解决方案:
你不能在cassandra中使用like运算符但是你可以使用范围运算符和范围运算符你可以解决这个"喜欢'无论%'"
一个例子:我有多个产品.每个产品都有自己的分区键(主键的第一部分):
CREATE TABLE user(productId int, username text, PRIMARY KEY(productId, username));
Run Code Online (Sandbox Code Playgroud)
现在我有一些用户:
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');
Run Code Online (Sandbox Code Playgroud)
现在,我想找到所有在开头都有a的用户.在SQL世界中,我在Cassandra中使用LIKE'a%'我使用:
SELECT * FROM user WHERE productId = 1 AND username >= 'a' AND username < 'b';
Run Code Online (Sandbox Code Playgroud)
结果:
productid | username
-----------+----------
1 | alex
1 | alpha
1 | andreas
1 | anna
Run Code Online (Sandbox Code Playgroud)
sdo*_*lgy 13
简单的回答:没有相当的LIKE
http://www.datastax.com/docs/0.8/dml/using_cql
以下是v0.8的命令参考:
http://www.datastax.com/docs/0.8/references/cql#cql-reference
如果您维护另一组包含用户名引用的行:
行:用户名:bab - > col:babu1,col:babar row:用户名:babu - > col:babur
实际上,您通过预先填充通常在RDBMS世界中搜索的所有结果来作弊.与多年前相比,存储成本低廉......这就是为什么现在这是一种可接受的方法.检索预先填充的信息列表对CPU和内存的密集程度较低.
小智 9
我在寻找要WHERE column_name LIKE '%keyword%'在Cassandra中执行的解决方案时碰到了这篇文章。答案是有希望的,但不能完全解决我的问题。
CREATE CUSTOM INDEX idx_name ON keyspace.columnfamily (column_name)
USING 'org.apache.cassandra.index.sasi.SASIIndex'
WITH OPTIONS = {
'mode': 'CONTAINS',
'analyzer_class': 'org.apache.cassandra.index.sasi.analyzer.NonTokenizingAnalyzer',
'case_sensitive': 'false'};
Run Code Online (Sandbox Code Playgroud)
为了使%keyword% (两个%s)起作用,索引必须具有以下模式的选项:CONTAINS以及那个analyzer_class才能使case_sensitive有效。