如何将 Presto 搜索配置为不区分大小写?

Posted

技术标签:

【中文标题】如何将 Presto 搜索配置为不区分大小写?【英文标题】:How to configure Presto searches to be case-insensitive? 【发布时间】:2017-08-08 14:04:46 【问题描述】:

就我而言,Presto 连接到已配置为不区分大小写的 mysql 数据库。但是通过 Presto 进行的任何搜索似乎都区分大小写。

问题:

1) 有没有办法将 Presto 搜索配置为区分大小写in?如果没有,是否可以在 Presto-MySQL 连接器中进行更改以使搜索不区分大小写?

2) 如果底层数据库不区分大小写,那么 Presto 搜索不应该也不区分大小写吗? (我假设 Presto 只生成查询计划,实际执行发生在底层数据库上)

示例:考虑下面的 MySQL 表格。

name
____
adam

Alan


select * from table where name like '%a%'
// returns adam, Alan on MySQL
// returns only adam on Presto

select * from table where name = 'Adam'
// returns adam on MySQL
// returns NIL on Presto

【问题讨论】:

这和facebook有什么关系?标记已删除。 【参考方案1】:

您必须通过将比较值标准化为低位或高位来明确要求不区分大小写的比较,如下所示:

select * from table where lower(name) like '%a%';

select * from table where lower(name) = lower('Adam');

【讨论】:

【参考方案2】:

您可以使用regexp_like(),并在正则表达式前面加上(?i) 以不区分大小写

select 
  * 
from table_name 
where 
  regexp_like(column_name, '(?i)fOO');  -- column contains fOO or FOO

select 
  * 
from table_name 
where 
  regexp_like(column_name, '(?i)^Foo'); -- column starts with fOO or FOO

【讨论】:

这个答案应该更高!

以上是关于如何将 Presto 搜索配置为不区分大小写?的主要内容,如果未能解决你的问题,请参考以下文章

nginx字体文件配置

Nginx服务器配置之location语法分析

字符串比较时如何将Sqlite3设置为不区分大小写?

nginx配置location [=|~|~*|^~] /uri/ { … }用法

如何在 Win32 控制台应用程序中将 argv[] 设置为不区分大小写?

我正在为不和谐的机器人编写代码,如果字符串不区分大小写,我希望这样,但我不知道如何