2015-10-26 4 views
1

Итак, у меня есть именованный запрос, который выполняет поиск по записям и сортирует результат по столбцу с именем fullName. Некоторые из этих полных имен имеют префикс «The» - я хотел бы изменить запрос, чтобы игнорировать эти префиксы. Вот посмотри на упрощенную версию текущего именованного запроса, с срубить список условных:HQL сортировать по имени игнорируя необязательный «префикс»

select r from Record r where r.available = true ORDER BY r.fullName asc 

ответ

0

Попробуйте это:

select r 
from Record r 
where r.available = true 
ORDER BY 
    CASE 
     WHEN r.fullName LIKE "The%" THEN SUBSTRING(r.fullName, 5) 
     ELSE r.fullName 
    END asc 
+0

Это почти то, что мне было нужно. Получил небольшую ошибку из .length(), но сбивание конечного параметра подстроки в любом случае соответствует концу. Нижняя строчка в нужном месте делает подобный регистр нечувствительным. 'выбор г от записи г где r.available = истина ORDER BY СЛУЧАЯ, КОГДА НИЖНЕГО (r.fullName), как "%", а затем подстроки (r.fullName, 5) ИНАЧЕ r.fullName END asc' – Snow

+0

@Snow: Хорошо, я удалил третий параметр подстроки, поскольку вы советуете мне;) –

Смежные вопросы