我正在使用PHP和后端ClickHouse数据库开发站点。当我使用类似查询时,它不支持区分大小写的单词。
select id,comments from discussion where comments LIKE "%Data not reflect%";
有什么方法可以搜索不区分大小写的单词?
我正在使用PHP和后端ClickHouse数据库开发站点。当我使用类似查询时,它不支持区分大小写的单词。
select id,comments from discussion where comments LIKE "%Data not reflect%";
有什么方法可以搜索不区分大小写的单词?
使用positionCaseInsensitive
或positionCaseInsensitiveUTF8
就这样
SELECT id,comments
FROM discussion
WHERE positionCaseInsensitive(comments,'Data not reflect')>0;
对于更复杂的模式,您可以在其中使用i
标志的正则表达式:
SELECT ... WHERE match(comment,'(?i)Data.*not reflect');
,
没有%>%
运算符。我认为您可以使用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 ** │
└────────────────────────┘
*/