如何在clickhouse数据库上搜索不区分大小写的查询中的字符串?

b4wnujal  于 2021-07-15  发布在  ClickHouse
关注(0)|答案(3)|浏览(2067)

我开发的网站使用php和后端clickhouse数据库。当我使用like查询时,它不支持区分大小写的词。

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

有没有办法搜索不区分大小写的单词?

bfnvny8b

bfnvny8b1#

没有 ILIKE 接线员。我想你可以用 lowerUTF8() .

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

但是,由于必须转换所有 comments 值为小写。

toiithl6

toiithl62#

使用 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-草垛针定位草垛针

esbemjvw

esbemjvw3#

从版本20.6.3.28开始,ch中添加了不区分大小写的ilike运算符:

SELECT *
FROM
(
    SELECT '**Data not reflect**' AS text
    UNION ALL
    SELECT '**data not reflect**'
)
WHERE text ILIKE '%Data not reflect%'

/*
┌─text───────────────────┐
│**Data not reflect**│
│**data not reflect**│
└────────────────────────┘

* /

相关问题