집 >데이터 베이스 >MySQL 튜토리얼 >효율적인 검색을 위해 SQL에서 준비된 문에 와일드카드를 어떻게 안전하게 사용할 수 있습니까?
검색 기능을 위해 준비된 문에 와일드카드 사용
키워드를 검색 매개변수로 사용하여 검색 기능을 구현할 때 다음을 활용해야 합니다. SQL의 LIKE 키워드. 그러나 LIKE를 준비된 문과 통합하는 것은 약간 까다로울 수 있습니다.
제공된 예에서:
PreparedStatement pstmt = con.prepareStatement( "SELECT * FROM analysis WHERE notes like ?"); pstmt.setString(1, notes);
SQL 문자열의 자리 표시자(?)는 다음과 같이 설정될 매개 변수를 나타냅니다. LIKE 키워드. 이 경우 자리표시자 매개변수에 할당된 값에 키워드%를 추가해야 합니다.
해결책:
Prepared와 함께 LIKE를 사용하려면 명령문에서 와일드카드('%')는 SQL 문자열이 아닌 값 자체에 직접 설정되어야 합니다. 매개변수를 설정할 때 값에 와일드카드를 추가하면 됩니다.
pstmt.setString(1, notes + "%");
접두사 일치가 필요한 경우 와일드카드를 값의 시작 부분에 배치해야 합니다.
pstmt.setString(1, "%" + notes);
글로벌 일치의 경우 와일드카드는 값의 양쪽 끝에 배치되어야 합니다.
pstmt.setString(1, "%" + notes + "%");
다음 사항에 유의하는 것이 중요합니다. %, _, [, ! 등 값의 특수 문자는 LIKE 절에서 와일드카드로 사용하는 것과 충돌하지 않도록 이스케이프해야 합니다. 응답에 제공된 예에서는 매개변수를 설정하기 전에 이러한 문자를 이스케이프 시퀀스로 대체하여 이 문제를 적절하게 해결합니다.
위 내용은 효율적인 검색을 위해 SQL에서 준비된 문에 와일드카드를 어떻게 안전하게 사용할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!