我开发的网站使用php和后端clickhouse数据库。当我使用like查询时,它不支持区分大小写的词。
select id,comments from discussion where comments LIKE "%Data not reflect%";
有没有办法搜索不区分大小写的单词?
bfnvny8b1#
没有 ILIKE 接线员。我想你可以用 lowerUTF8() .
ILIKE
lowerUTF8()
select id,comments from discussion where lowerUTF8(comments) LIKE '%Data not reflect%';
但是,由于必须转换所有 comments 值为小写。
comments
toiithl62#
使用 positionCaseInsensitive 或者 positionCaseInsensitiveUTF8 就这样
positionCaseInsensitive
positionCaseInsensitiveUTF8
SELECT id,comments FROM discussion WHERE positionCaseInsensitive(comments,'Data not reflect')>0;
对于更复杂的模式,可以使用正则表达式 i 内部标志:
i
SELECT ... WHERE match(comment, '(?i)Data.*not reflect');
见文件:https://clickhouse.yandex/docs/en/query_language/functions/string_search_functions/#position-草垛针定位草垛针
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**│ └────────────────────────┘ * /
3条答案
按热度按时间bfnvny8b1#
没有
ILIKE
接线员。我想你可以用lowerUTF8()
.但是,由于必须转换所有
comments
值为小写。toiithl62#
使用
positionCaseInsensitive
或者positionCaseInsensitiveUTF8
就这样对于更复杂的模式,可以使用正则表达式
i
内部标志:见文件:https://clickhouse.yandex/docs/en/query_language/functions/string_search_functions/#position-草垛针定位草垛针
esbemjvw3#
从版本20.6.3.28开始,ch中添加了不区分大小写的ilike运算符: