>Java >java지도 시간 >준비된 명령문에서 \'like\' 와일드카드를 효과적으로 사용하는 방법은 무엇입니까?

준비된 명령문에서 \'like\' 와일드카드를 효과적으로 사용하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-17 14:29:02816검색

How to use the

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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