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();
답변
준비된 명령문 SQL 문자열이 아닌 값 자체로 설정해야합니다.
그래서 이것은 접두사 일치를 위해해야합니다 :
notes = notes
.replace("!", "!!")
.replace("%", "!%")
.replace("_", "!_")
.replace("[", "![");
PreparedStatement pstmt = con.prepareStatement(
"SELECT * FROM analysis WHERE notes LIKE ? ESCAPE '!'");
pstmt.setString(1, notes + "%");
또는 접미사 일치 :
pstmt.setString(1, "%" + notes);
또는 전 세계 경기 :
pstmt.setString(1, "%" + notes + "%");
답변
다음과 같이 코딩하십시오.
PreparedStatement pstmt = con.prepareStatement(
"SELECT * FROM analysis WHERE notes like ?");
pstmt.setString(1, notes + "%");`
당신이 있는지 확인 하지 마십시오 그들은 예외가 발생합니다 아래와 같은 따옴표 ”를 포함한다.
pstmt.setString(1,"'%"+ notes + "%'");
답변
CONCATE SQL 함수를 사용하여 간단하게 수행 할 수 있습니다.
PreparedStatement pstmt = con.prepareStatement(
"SELECT * FROM analysis WHERE notes like CONCAT( '%',?,'%')";
pstmt.setString(1, notes);
ResultSet rs = pstmt.executeQuery();
이것은 내 경우에 완벽하게 작동합니다.
답변
PreparedStatement ps = cn.prepareStatement("Select * from Users where User_FirstName LIKE ?");
ps.setString(1, name + '%');
이것을 시도하십시오.
답변
String fname = "Sam\u0025";
PreparedStatement ps= conn.prepareStatement("SELECT * FROM Users WHERE User_FirstName LIKE ? ");
ps.setString(1, fname);
답변
String query="select * from test1 where "+selected+" like '%"+SelectedStr+"%';";
PreparedStatement preparedStatement=con.prepareStatement(query);
// where seleced and SelectedStr are String Variables in my program