Prepared 문에서 "like" 와일드카드 활용
Prepared 문은 SQL 삽입 공격을 방지하고 성능을 향상시켜 SQL 쿼리를 실행하는 효과적인 방법을 제공합니다. . 그러나 "like" 와일드카드와 준비된 문을 통합하는 것은 다소 까다로울 수 있습니다.
키워드를 기반으로 "분석" 테이블의 행을 검색하는 다음 쿼리를 고려해 보세요.
PreparedStatement pstmt = con.prepareStatement( "SELECT * FROM analysis WHERE notes like ?"); pstmt.setString(1, notes); ResultSet rs = pstmt.executeQuery();
이 쿼리에 'like' 와일드카드를 사용하려면 준비된 문 매개변수에 바인딩되는 값 내에 이를 포함해야 합니다. 단순히 pstmt.setString(1, Notes)에 "keyword%"를 추가하는 것만으로는 충분하지 않습니다.
대신 필요에 따라 접두사, 접미사 또는 전역 일치를 구현할 수 있습니다.
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 + "%");
"like" 와일드카드를 방해하지 않도록 슬래시()를 사용하여 "notes" 문자열의 특수 문자를 이스케이프해야 합니다. 검색하세요.
위 내용은 준비된 명령문에서 \"like\" 와일드카드를 효과적으로 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!