Hibernate: Можно ли использовать Like и In вместе в Named Query?

0

Мой названный запрос довольно длинный из-за использования Like с OR, поскольку дерево объектов довольно велико. Можем ли мы использовать Like и In вместе в Named Query:

#Mysql
@NamedQuery(name="getDhahush", query="SELECT d.pid FROM Dhahush d WHERE lower(d.person.telephon.mobile.mobno) LIKE lower('78129%') OR lower(d.person.telephon.mobile.mobno) LIKE lower('8129%') OR lower(d.person.telephon.mobile.mobno) LIKE lower('5159%')")

Базовая база данных - это MySQL.

Теги:
hibernate
named-query

2 ответа

0

Вместо этого используйте ЛЮБОЙ.

В PostgreSQL ваш запрос будет примерно таким:

select 'foo' like any(array['f%', '%o%', '&t']);

MySQL не поддерживает этот точный синтаксис, но вы можете сделать что-то подобное с подзапросом:

select 'foo' like any( select 'f%' union select '%o%' union select '&t');
0

LIKE не может использоваться в сочетании с IN

e.g.
mobno LIKE IN ('781%','719%')

Но я бы удалил нижний из нижнего (d.person.telephon.mobile.mobno), потому что, во-первых, это число и не требует меньше, а во-вторых, и что самое главное, функция lower() не сможет использовать какой-либо индекс уже на месте на колонке "mobno" Cheers.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню