このLIKE
条件により、SQL ステートメントの where 句でワイルドカードを使用できます。これにより、パターンマッチングを実行できます。条件は、select、insert、update、または deleteのLIKE
有効な SQL ステートメントで使用できます。このような
SELECT * FROM users
WHERE user_name like 'babu%';
上記の同じ操作と同様に、CLI で Cassandra に対して任意のクエリを使用できます。
Cassandra 3.4 (3.5 を推奨) 以降、SSTable Attached Secondary Index (SASI) を使用して LIKE クエリを実現できます。
例えば:
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%';
これらの例と、サフィックス クエリなどのその他の構成オプションは、ドキュメントに記載されています。
SASI がどのように機能するかについての詳細な説明は、こちらにあります。
私は知っています:それは古い質問ですが、このトピックには解決策があります:
カサンドラでは 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
簡単な答え: 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
ユーザー名への参照を保持する行の別のセットを維持する場合:
行: username:bab -> col:babu1、col:babar 行: username:babu -> col:babur
RDBMS の世界で通常検索するすべての結果を事前に入力することで、効果的にごまかしています。ストレージは数年前に比べて安価です...そのため、これが現在受け入れられているアプローチです. 事前入力された情報のリストを取得するため、CPU とメモリへの負荷が少なくなります。