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

我正在使用PHP和后端ClickHouse数据库开发站点。当我使用类似查询时,它不支持区分大小写的单词。

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

有什么方法可以搜索不区分大小写的单词?

dhy9062 回答:如何在Clickhouse数据库上搜索不区分大小写的查询中的字符串?

使用positionCaseInsensitivepositionCaseInsensitiveUTF8

就这样

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

,

没有%>%运算符。我认为您可以使用ILIKE

lowerUTF8()

但是,由于可能必须将所有select id,comments from discussion where lowerUTF8(comments) LIKE '%Data not reflect%'; 的值都转换为小写,因此性能可能很重。

,

不区分大小写的 ILIKE 运算符已从version 20.6.3.28开始添加到CH:

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 ** │
└────────────────────────┘
*/
本文链接:https://www.f2er.com/3152924.html

大家都在问