복붙노트

[SQL] LIKE 조건 : SQL과 같은 동일 카산드라에 대한 모든 쿼리가 있습니까?

SQL

LIKE 조건 : SQL과 같은 동일 카산드라에 대한 모든 쿼리가 있습니까?

등의 조건은 우리가 SQL 문의 WHERE 절에 와일드 카드를 사용할 수 있습니다. 이것은 우리가 패턴 매칭을 수행 할 수 있습니다. 등의 조건은 유효한 SQL 문에 사용할 수 있습니다 - 삽입, 업데이트를 선택하거나 삭제할 수 있습니다. 이처럼

SELECT * FROM users
WHERE user_name like 'babu%';

상기와 동일한 동작을 원하는 쿼리는 CLI에서 카산드라 사용할 수 있습니다.

해결법

  1. ==============================

    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. ==============================

    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. ==============================

    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. ==============================

    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. ==============================

    5.CQL LIKE 문은 실라 오픈 소스에 3.2 RC1, 실라하는 CQL 호환 데이터베이스에 대한 릴리스 후보입니다. 우리는 출시 전에 피드백을 싶어요. 여기에 세부 사항입니다 :

    CQL LIKE 문은 실라 오픈 소스에 3.2 RC1, 실라하는 CQL 호환 데이터베이스에 대한 릴리스 후보입니다. 우리는 출시 전에 피드백을 싶어요. 여기에 세부 사항입니다 :

    새로운 CQL LIKE 키워드는 와일드 카드 %를 사용하여, 검색 패턴에 대한 칼럼 일치 허용한다. LIKE 만에 맞는지 참고 필터링 할 수 있습니다.

    LIKE 구문 지원 :

    '_'단일 문자와 일치

    '%는'(빈 문자열 포함) 문자열과 일치

    '\'는 이스케이프 다음 패턴 문자는, 그래서 그대로 일치

    다른 패턴 문자는 그 자체를 일치

    빈 패턴 빈 텍스트 필드를 일치

    예를 들면 :

    출처 : RELEASE] 실라 3.2 RC1 2

  6. from https://stackoverflow.com/questions/9905795/is-there-any-query-for-cassandra-as-same-as-sqllike-condition by cc-by-sa and MIT license