>데이터 베이스 >MySQL 튜토리얼 >효율적인 검색을 위해 SQL에서 준비된 문에 와일드카드를 어떻게 안전하게 사용할 수 있습니까?

효율적인 검색을 위해 SQL에서 준비된 문에 와일드카드를 어떻게 안전하게 사용할 수 있습니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-19 18:52:171041검색

How Can I Safely Use Wildcards with Prepared Statements in SQL for Efficient Searching?

검색 기능을 위해 준비된 문에 와일드카드 사용

키워드를 검색 매개변수로 사용하여 검색 기능을 구현할 때 다음을 활용해야 합니다. 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.