LIKE
条件允许我们在SQL语句的where子句中使用通配符。这允许我们执行模式匹配。LIKE
条件可用于任何有效的SQL语句- select、insert、update或delete。像这样
SELECT * FROM users
WHERE user_name like 'babu%';
与上面的操作类似,任何查询都可以在CLI中用于Cassandra。
发布于 2017-07-19 19:25:38
从Cassandra 3.4 (推荐3.5)开始,LIKE查询可以使用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';
那么像query这样的前缀就起作用了:
SELECT * FROM cyclist_name WHERE firstname LIKE 'M%';
SELECT * FROM cyclist_name WHERE firstname LIKE 'Mic%';
这些示例和更多配置选项(如后缀查询)可以在documentation中找到
有关SASI如何工作的更深入的解释可以在here中找到。
发布于 2016-05-08 08:33:30
我知道:这是一个古老的问题,但这个话题有一个解决方案:
在cassandra中不能使用like运算符,但可以使用范围运算符,使用范围运算符可以解决"like‘随便%’“
举个例子:我有不止一个产品。每个产品都有自己的分区键(主键的第一部分):
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');
现在,我想找出所有开头有a的用户。在我使用的SQL世界中,比如'a%‘在Cassandra中,我使用的是:
SELECT * FROM user WHERE productId = 1 AND username >= 'a' AND username < 'b';
结果是:
productid | username
-----------+----------
1 | alex
1 | alpha
1 | andreas
1 | anna
https://stackoverflow.com/questions/9905795
复制相似问题