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

时间:2017-03-17 06:05:17

标签: presto

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

问题:

1)有没有办法将Presto搜索配置为 敏感?如果没有,可以在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

2 个答案:

答案 0 :(得分:7)

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

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

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

答案 1 :(得分:1)

您可以使用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