在我的網站上,我需要使用最終用戶提供的值執行通配符查詢。最好的做法是使用PreparedStatement來避免SQL注入。我的查詢是非常非常長,所以這是一個例子:如何在變量PreparedStatement中使用SQL通配符
String query = "SELECT ... FROM ... WHERE ..."+ //
"AND UPPER(CUST_NAME) LIKE UPPER('%?%')";
PreparedStatement pstmt = conn.prepareStatement(query);
stmt.setString(1, "joe");
的問題是了setString()拋出一個異常:SQL異常:無效的列索引
找到答案:用'UPPER(CONCAT(CONCAT('%',?),'%')''替換'UPPER'('%?%')')'有沒有人有任何其他更好的建議? – Bryan