[SQL] LIKE 조건 : SQL과 같은 동일 카산드라에 대한 모든 쿼리가 있습니까?
SQLLIKE 조건 : SQL과 같은 동일 카산드라에 대한 모든 쿼리가 있습니까?
등의 조건은 우리가 SQL 문의 WHERE 절에 와일드 카드를 사용할 수 있습니다. 이것은 우리가 패턴 매칭을 수행 할 수 있습니다. 등의 조건은 유효한 SQL 문에 사용할 수 있습니다 - 삽입, 업데이트를 선택하거나 삭제할 수 있습니다. 이처럼
SELECT * FROM users
WHERE user_name like 'babu%';
상기와 동일한 동작을 원하는 쿼리는 CLI에서 카산드라 사용할 수 있습니다.
해결법
-
==============================
1.간단한 답 : LIKE의 동등한이 없다
간단한 답 : 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 : 바바 행 : 사용자 이름 : BABU를 -> COL : 부르
효과적으로 당신이에 의해 부정 행위는 일반적으로 RDBMS의 세계로 검색 할 것이라고 모든 결과를 미리 채우는. 저장은이 이제 허용 방법입니다 이유입니다 ... 년 전에 있었는지에 비해 저렴합니다. 그것은 정보의 사전 인구 목록을 검색하기 위해 CPU 및 메모리에 덜 집중합니다.
-
==============================
2.카산드라 3.4 (권장 3.5) 이후, LIKE 쿼리는 보조 인덱스 (SASI)에 부착 된 SSTable을 사용하여 달성 될 수있다.
카산드라 3.4 (권장 3.5) 이후, LIKE 쿼리는 보조 인덱스 (SASI)에 부착 된 SSTable을 사용하여 달성 될 수있다.
예를 들면 :
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의 작품이 여기에서 찾을 수 있습니다 방법에 대한보다 깊이 설명.
-
==============================
3.그것은 오래된 질문이다하지만이 주제에 대한 해결책이있다 : 나는 알고있다 :
그것은 오래된 질문이다하지만이 주제에 대한 해결책이있다 : 나는 알고있다 :
당신은 카산드라에서 연산자처럼 사용할 수 있지만 범위 연산자를 사용할 수 있습니다 및 범위 연산자를 사용하여이 해결할 수있다 "처럼 '무엇이든 %'"
예 : 두 개 이상의 제품이있다. 각 제품은 자신의 파티션 키 (기본 키의 첫 번째 부분)이 있습니다
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 세상에서 내가 이것을 사용 카산드라의 '는 %'LIKE를 사용합니다 :
SELECT * FROM user WHERE productId = 1 AND username >= 'a' AND username < 'b';
결과:
productid | username -----------+---------- 1 | alex 1 | alpha 1 | andreas 1 | anna
-
==============================
4.내가 COLUMN_NAME 카산드라에서 '% 키워드 %'와 같은 WHERE 실행하는 솔루션을 찾고있는 동안이 게시물을 가로 질러왔다. 대답은 약속 만 확실히 내 문제를 해결하지 않았다.
내가 COLUMN_NAME 카산드라에서 '% 키워드 %'와 같은 WHERE 실행하는 솔루션을 찾고있는 동안이 게시물을 가로 질러왔다. 대답은 약속 만 확실히 내 문제를 해결하지 않았다.
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'};
(2퍼센트들)이 작동 % % 키워드 만들기 위해, 모드 옵션이 있어야합니다 인덱스 : CASE_SENSITIVE을 적용하기 위해 그 analyzer_class와 함께 포함 함.
-
==============================
5.CQL LIKE 문은 실라 오픈 소스에 3.2 RC1, 실라하는 CQL 호환 데이터베이스에 대한 릴리스 후보입니다. 우리는 출시 전에 피드백을 싶어요. 여기에 세부 사항입니다 :
CQL LIKE 문은 실라 오픈 소스에 3.2 RC1, 실라하는 CQL 호환 데이터베이스에 대한 릴리스 후보입니다. 우리는 출시 전에 피드백을 싶어요. 여기에 세부 사항입니다 :
새로운 CQL LIKE 키워드는 와일드 카드 %를 사용하여, 검색 패턴에 대한 칼럼 일치 허용한다. LIKE 만에 맞는지 참고 필터링 할 수 있습니다.
LIKE 구문 지원 :
'_'단일 문자와 일치
'%는'(빈 문자열 포함) 문자열과 일치
'\'는 이스케이프 다음 패턴 문자는, 그래서 그대로 일치
다른 패턴 문자는 그 자체를 일치
빈 패턴 빈 텍스트 필드를 일치
예를 들면 :
출처 : RELEASE] 실라 3.2 RC1 2
from https://stackoverflow.com/questions/9905795/is-there-any-query-for-cassandra-as-same-as-sqllike-condition by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 어떻게 C #을에서 .SQL을 실행할 수 있습니까? (0) | 2020.06.24 |
---|---|
[SQL] 어떻게 포스트 그레스에 이동 평균 지수를 계산? (0) | 2020.06.24 |
[SQL] 하나를 제외한 모든 중복 레코드를 삭제 (0) | 2020.06.24 |
[SQL] SQL 서버 저장 프로 시저는 테이블을 반환 (0) | 2020.06.24 |
[SQL] 그 합류 값의 합을 SQL 업데이트 (0) | 2020.06.24 |