Как настроить поиск 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

person felarof99    schedule 17.03.2017    source источник
comment
При чем здесь facebook? Тег удален.   -  person CBroe    schedule 17.03.2017


Ответы (2)


Вы должны явно запросить сравнение без учета регистра, нормализуя сравниваемые значения либо к нижнему, либо к верхнему, например:

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

select * from table where lower(name) = lower('Adam');
person Piotr Findeisen    schedule 01.04.2017

Вы можете использовать regexp_like() и добавить к регулярному выражению (?i) для нечувствительности к регистру

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

or

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