在搜尋功能的準備語句中使用通配符
使用關鍵字作為搜尋參數實現搜尋功能時,有必要使用SQL 中的LIKE 關鍵字。然而,將 LIKE 與準備好的語句整合可能有點棘手。
在提供的範例中:
PreparedStatement pstmt = con.prepareStatement( "SELECT * FROM analysis WHERE notes like ?"); pstmt.setString(1, notes);
SQL 字串中的佔位符 (?) 表示將使用LIKE 關鍵字。在這種情況下,應將 關鍵字% 附加到分配給佔位符參數的值。
解決方案:
將LIKE 與preded 一起使用語句中,通配符('%') 應直接在值本身中設置,而不是在SQL 字串中設定。這可以透過在設定參數時將通配符附加到值來完成:
pstmt.setString(1, notes + "%");
如果需要前綴匹配,則應將通配符放在值的開頭:
pstmt.setString(1, "%" + notes);
對於全域匹配,通配符應該放在值的兩端:
pstmt.setString(1, "%" + notes + "%");
需要注意的是值中的特殊字元(例如%、_、[ 和 !)需要進行轉義,以避免與在 LIKE 子句中用作通配符發生衝突。回應中提供的範例透過在設定參數之前用轉義序列替換這些字元來充分解決此問題。
以上是如何在 SQL 中安全使用通配符和預編譯語句實現高效搜尋?的詳細內容。更多資訊請關注PHP中文網其他相關文章!