В PostgreSQL вы можете выполнять нечувствительный к регистру запрос с помощью ILIKE
:
select * from test where value ilike 'half is 50$%' escape '$'
И вы можете запрашивать несколько значений одновременно, комбинируя ILIKE
с ANY()
select * from test where value ilike any(array['half is 50%', 'fifth is 20%'])
Запрос выше будет соответствовать 'Fifth is 2019'
, что мне не нужно, но когда я пытаюсь использовать ILIKE
и ANY()
с escape-символом, я получаю синтаксическую ошибку.
Я что-то упустилглупо, или это просто не поддерживается? Если нет, есть ли другой способ запроса в регистронезависимом режиме с несколькими значениями одновременно?
РЕДАКТИРОВАТЬ: Чтобы уточнить, запрос будет принимать параметры через JDBC, поэтому фактический SQL будетвыглядеть примерно так:
select * from test where value ilike any(?) escape '$'
Вот почему я смотрю, что make% и _ из пользовательского ввода интерпретируются как литералы.