LIKE
条件により、SQLステートメントのwhere句でワイルドカードを使用できます。これにより、パターンマッチングを実行できます。 LIKE
条件は、有効なSQLステートメント(選択、挿入、更新、または削除)で使用できます。このような
SELECT * FROM users
WHERE user_name like 'babu%';
上記と同じ操作と同様に、CLIでCassandraに対してクエリを使用できます。
簡単な答え:[〜#〜] like [〜#〜]に相当するものはありません
https://docs.datastax.com/en/cql/3.3/cql/cql_reference/cqlSelect.html
V0.8のコマンドリファレンスは次のとおりです。
http://www.datastax.com/docs/0.8/references/cql#cql-reference
ユーザー名への参照を保持する行の別のセットを維持する場合:
行:ユーザー名:bab-> col:babu1、col:babar行:ユーザー名:babu-> col:babur
事実上、RDBMSの世界で通常検索するすべての結果を事前に入力することにより、不正行為を行っています。ストレージは数年前と比較して安価です...これが今、これが受け入れられたアプローチである理由です。事前に入力された情報のリストを取得するためのCPUとメモリの負荷は軽減されます。
Cassandra 3.4(3.5を推奨))であるため、LIKEクエリはSSTable Attached Secondary Index(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がどのように機能するかについての詳細な説明は こちら にあります。
私は知っています:それは古い質問ですが、このトピックの解決策があります:
cassandraではlike演算子を使用できませんが、範囲演算子を使用できます。範囲演算子を使用すると、この「like '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');
今、私は最初にaを持つすべてのユーザーを見つけたいです。 SQLの世界では、CassandraでLIKE 'a%'を使用します。これを使用します。
SELECT * FROM user WHERE productId = 1 AND username >= 'a' AND username < 'b';
結果:
productid | username
-----------+----------
1 | alex
1 | alpha
1 | andreas
1 | anna
実行するソリューションを探しているときにこの投稿に出会いました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'};
作るために %keyword%
(two%s)は機能します。インデックスにはmode:CONTAINSを伴うオプションが必要ですanalyzer_classを作成してcase_sensitive有効。