簡體   English   中英

Cassandra 3.4 Java LIKE運算符

[英]Cassandra 3.4 Java LIKE operator

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,這應該工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM