MySQL模糊查询是指在SQL语句中使用LIKE
关键字进行模糊匹配。参数化查询则是一种防止SQL注入攻击的技术,通过将用户输入作为参数传递给SQL语句,而不是直接拼接在SQL字符串中。
MySQL模糊查询主要有以下几种类型:
_
表示单个字符。_
表示单个字符。%
表示任意数量的字符。%
表示任意数量的字符。REGEXP
关键字进行正则表达式匹配。REGEXP
关键字进行正则表达式匹配。模糊查询常用于以下场景:
假设我们要实现一个用户搜索功能,用户可以输入部分用户名进行搜索。为了避免SQL注入,我们可以使用参数化查询。
import mysql.connector
# 连接数据库
db = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="yourdatabase"
)
cursor = db.cursor()
# 用户输入的搜索关键词
search_keyword = "%admin%"
# 参数化查询
query = "SELECT * FROM users WHERE username LIKE %s"
cursor.execute(query, (search_keyword,))
# 获取查询结果
results = cursor.fetchall()
for row in results:
print(row)
# 关闭连接
cursor.close()
db.close()
import java.sql.*;
public class FuzzySearch {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/yourdatabase";
String user = "yourusername";
String password = "yourpassword";
try (Connection conn = DriverManager.getConnection(url, user, password)) {
String searchKeyword = "%admin%";
String query = "SELECT * FROM users WHERE username LIKE ?";
try (PreparedStatement pstmt = conn.prepareStatement(query)) {
pstmt.setString(1, searchKeyword);
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
System.out.println(rs.getString("username"));
}
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
LIKE
进行模糊查询时,需要注意特殊字符(如%
和_
)的处理,可以使用转义字符来解决。希望这些信息对你有所帮助!
领取专属 10元无门槛券
手把手带您无忧上云