Как использовать предложение sql IN с sql LIKE - PullRequest
0 голосов
/ 28 ноября 2018

У меня есть приложение весенней загрузки, в котором в одном из классов DAO у нас есть один метод, где мы извлекаем некоторые данные, для этого мы используем запрос ниже, здесь используется namedParameterJdbcTemplate

select student_id from student_records where create_date >= timestamp '"+appProps.getFromDate()+"' and  create_date <= timestamp '"+appProps.getToDate()+"' and student_id in (:studentIdList)

полный метод, как показано ниже

public List<String> readMatchingStudentIds_ALL(List<String> inputStudentIdsList){
            List<String> macthingStudentIdsList = new ArrayList<>();
            try{
                Map<String, List<String>> namedParameters = Collections.singletonMap("studentIdsList", inputStudentIdsList);
                String query = " select student_id from student_records where create_date >= timestamp '"+appProps.getFromDate()+"' and  create_date <= timestamp '"+appProps.getToDate()+"' and student_id in (:studentIdList)";

                macthingStudentIdsList =  namedParameterJdbcTemplate.queryForList(query, namedParameters, String.class);
            }catch(Exception e)
            {
                throw new RuntimeException(e.getMessage(),e);
            }
            return macthingStudentIdsList;
     }

все работает нормально, но теперь возникают проблемы, например, входящий студент в списке содержит «AFE1245», но в нашей базе данных у нас есть данные, подобные ниже «000AEF1245», чтоя имею в виду 0 с префиксом, мы не знаем, сколько префиксов 0, для одного запроса мы можем использовать оператор LIKE, как показано ниже

select student_id from student_records where student_id like '%input_student_id'

, но мой случай другой, так как нам нужно использовать выражение sql IN, есть ли у них возможность, мы можем использовать sql IN предложение и LIKE оба или их любой другой способ

1 Ответ

0 голосов
/ 28 ноября 2018

Вы можете сделать это по индивидуальным НРАВИТСЯ с ИЛИ:

SELECT student_id FROM student_records
WHERE student_id LIKE '%input_student_id'
OR  student_id LIKE 'input_student_id%'
OR  student_id LIKE '%input_student_id%';

См. это

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...