programing

준비된 문장에서 "좋아요" 와일드카드 사용

prostudy 2022. 6. 26. 09:40
반응형

준비된 문장에서 "좋아요" 와일드카드 사용

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 + "%");

또는 suffix-match:

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 + "%'");

를 사용할 수 있습니다.CONCATSQL 함수

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

언급URL : https://stackoverflow.com/questions/8247970/using-like-wildcard-in-prepared-statement

반응형