首頁 >Java >java教程 >如何在準備好的語句中有效使用「like」通配符?

如何在準備好的語句中有效使用「like」通配符?

Linda Hamilton
Linda Hamilton原創
2024-11-17 14:29:02824瀏覽

How to use the

在準備語句中使用「like」通配符

準備語句透過防止SQL 注入攻擊和增強效能,提供了執行SQL 查詢的有效方法。但是,將“like”通配符與準備好的語句整合可能有點棘手。

考慮以下查詢,該查詢根據關鍵字在「analysis」表中搜尋行:

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

請記住使用正斜線() 對“notes”字串中的特殊字元進行轉義,以防止它們幹擾“ like”通配符搜尋。

以上是如何在準備好的語句中有效使用「like」通配符?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn