Я использую подготовленные операторы для выполнения запросов к базе данных MySQL. И я хочу реализовать функцию поиска на основе своего рода ключевого слова.
Для этого мне нужно использовать LIKE
ключевое слово, это я много знаю. И я также использовал подготовленные заявления раньше, но я не знаю , как использовать его с , LIKE
потому что из следующего кода , где бы я добавить 'keyword%'
?
Могу ли я напрямую использовать его pstmt.setString(1, notes)
как (1, notes+"%")
или что-то подобное. Я вижу много сообщений на эту тему в Интернете, но нигде нет хорошего ответа.
PreparedStatement pstmt = con.prepareStatement(
"SELECT * FROM analysis WHERE notes like ?");
pstmt.setString(1, notes);
ResultSet rs = pstmt.executeQuery();
... LIKE '%' || ? || '%'
или аналогично - но это гораздо менее гибко.WHERE UPPER(?) LIKE UPPER(?)
при использованииpstmt.setString(2, "%" + notes + "%")
'%' || ? || '%'
как уже упоминалось в 1-м комментарии, все-таки лучше? У меня нет возможности экспериментировать прямо сейчас.Код это так:
Убедитесь, что вы НЕ включаете кавычки, как показано ниже, поскольку они вызовут исключение.
источник
мы можем упростить это, используя функцию CONCATE SQL.
это идеально подходит для моего случая.
источник
Попробуйте это.
источник
источник
источник