Кассандра использует «лайк» в условии запроса - PullRequest
0 голосов
/ 20 апреля 2020

Когда я запрашиваю у Cassandra оператор CQL:

select * from abctpl where tpl like  '1-1'

В таблице, содержимое tpl, которое я хочу, это '1-1-1', и оно уникально. Но на самом деле я получаю 3 ряда. Другие два tpls не содержат строку «1-1-1», я полагаю, Кассандра считает «-» подстановочным знаком. Если слово tpl, например «11111111», также может быть выбрано.

Итак, как мне отредактировать CQL, чтобы он запрашивал точные данные?

1 Ответ

0 голосов
/ 22 апреля 2020
select * from abctpl where tpl like  '1-1';

Я думаю, что проблема в том, что вы не предоставляете подстановочный знак LIKE %. Если ваш индекс SASI по умолчанию установлен в режим PREFIX, то это должно работать:

select * from abctpl where tpl like  '1-1%';

Просмотрите документы DataStax по использованию индексов SASI: https://docs.datastax.com/en/dse/6.7/cql/cql/cql_using/useSASIIndex.html. У этого есть несколько примеров запросов, а также как указать режим при создании индекса.

сделать так, чтобы он запрашивал точные данные?

И если он точный данные, к которым вы стремитесь, используя равно (=), справляются с этим лучше, чем LIKE.

...