Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManagerImpl.java =================================================================== diff -u -r35247 -r35253 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManagerImpl.java (.../TousseDefinitionManagerImpl.java) (revision 35247) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManagerImpl.java (.../TousseDefinitionManagerImpl.java) (revision 35253) @@ -1289,9 +1289,17 @@ List tempIdList = idList.subList(fromIndex, toIndex); String sql2 = String.format(" where 1=1 and %s ", SqlUtils.getNonStringFieldInLargeCollectionsPredicate("po.id", tempIdList)); - - sql2 += " order by po.name asc," + DatabaseUtil.getSqlLengthFunctionName(dbConnection) + "(po.name) asc "; - + if(StringUtils.isNotBlank(searchString)){ + sql2 += " order by case when po.name like '%" + + searchString + +"%' then 3 when po.spelling like '%" + + searchString + +"%' then 2 else 1 end desc," + + sqlFunctionsAdapter.strlen("po.name") + +",po.name "; + }else{ + sql2 += " order by po.name asc," + DatabaseUtil.getSqlLengthFunctionName(dbConnection) + "(po.name) asc "; + } @SuppressWarnings("unchecked") List tousseDefinitions = objectDao.findBySql( TousseDefinition.class.getSimpleName(), sql2);