Do wykonywania zapytań do bazy danych mysql używam przygotowanych instrukcji. Chcę wdrożyć funkcję wyszukiwania opartą na pewnego rodzaju słowach kluczowych.
W tym celu muszę użyć LIKE
słowa kluczowego, tyle wiem. I już wcześniej korzystałem z przygotowanych instrukcji, ale nie wiem, jak tego użyć, LIKE
ponieważ z poniższego kodu gdzie miałbym dodać 'keyword%'
?
Czy mogę go bezpośrednio użyć w pstmt.setString(1, notes)
as (1, notes+"%")
lub coś takiego. Widzę wiele postów na ten temat w Internecie, ale nigdzie nie ma dobrej odpowiedzi.
PreparedStatement pstmt = con.prepareStatement(
"SELECT * FROM analysis WHERE notes like ?");
pstmt.setString(1, notes);
ResultSet rs = pstmt.executeQuery();
... LIKE '%' || ? || '%'
lub podobnie - ale to jest znacznie mniej elastyczne.WHERE UPPER(?) LIKE UPPER(?)
podczas korzystaniapstmt.setString(2, "%" + notes + "%")
'%' || ? || '%'
jak wspomniano w 1 komentarzu, mimo wszystko było lepiej? Nie mam teraz okazji eksperymentować.Zakoduj to w ten sposób:
Upewnij się, że NIE WIESZ cudzysłowów '' jak poniżej, ponieważ spowodują one wyjątek.
źródło
możemy to w prosty sposób zrobić, używając funkcji CONCATE SQL.
to działa idealnie w moim przypadku.
źródło
Wypróbuj to.
źródło
źródło
źródło