Как искать строку в запросе с учетом регистра в базе данных Clickhouse? - PullRequest
1 голос
/ 06 ноября 2019

Я занимаюсь разработкой сайта с использованием PHP и базы данных ClickHouse. Когда я использую подобные запросы, он не поддерживает регистрозависимые слова.

select id,comments from discussion where  comments LIKE "%Data not reflect%";

Есть ли способ поиска слов без учета регистра?

Ответы [ 2 ]

2 голосов
/ 07 ноября 2019

Используйте positionCaseInsensitive или positionCaseInsensitiveUTF8

Точно так же

SELECT id,comments
FROM discussion
WHERE positionCaseInsensitive(comments,'Data not reflect')>0;

Для более сложных шаблонов вы можете использовать регулярное выражение с флагом i внутри:

SELECT ... WHERE match(comment, '(?i)Data.*not reflect');

См. Документацию: https://clickhouse.yandex/docs/en/query_language/functions/string_search_functions/#position-haystack-needle-locate-haystack-needle

1 голос
/ 06 ноября 2019

Нет оператора ILIKE. Я думаю, что вы можете использовать lowerUTF8().

select id,comments from discussion where lowerUTF8(comments) LIKE '%Data not reflect%';

Однако, это может привести к снижению производительности, поскольку придется преобразовать все значения comments в нижний регистр.

...