编程语言
首页 > 编程语言> > Cassandra 3.4 Java LIKE运算符

Cassandra 3.4 Java LIKE运算符

作者:互联网

现在,Cassandra 3.4通过自定义索引提供了LIKE运算符.

在我的使用cqlsh的测试示例中,它与SELECT * FROM table WHERE indexed_column LIKE’%VALU%’类似,可以正常工作.我已经建立了一个索引,并且它的所有功能都完美无缺.

如何在具有动态值的Java驱动程序(我正在使用3.0.2版)中执行此操作?当使用像这样的文字值时,我的查询可以使用QueryBuilder并使用PreparedStatements(PS示例,但QueryBuilder也可以使用文字值):

PreparedStatement ps = PreparedStatement("SELECT * FROM table WHERE indexed_column LIKE '%VALU%'");

但是如果我不想使用呢?在QueryBuilder或使用PreparedStatements中绑定值(例如,绑定’%VAL%’).例如.

PreparedStatement ps = PreparedStatement("SELECT * FROM table WHERE indexed_column LIKE ?");
BoundStatement boundStatement = new BoundStatement(ps);
cassandraSession.execute(boundStatement.bind('%VAL%');

我收到以下错误:

com.datastax.driver.core.exceptions.SyntaxError: line 1:53 mismatched input '?' expecting STRING_LITERAL (...test.table WHERE indexed_column LIKE [?];)

解决方法:

这是3.4中的一个错误,该错误已通过CASSANDRA-11456在C * 3.6中修复,因为您无法为LIKE运算符上的值提供绑定标记(?).如果您升级到Cassandra 3.6,则应该可以使用.

标签:datastax,datastax-java-driver,cassandra,java
来源: https://codeday.me/bug/20191026/1940160.html