模糊查询:select * from tb_emp where name like '%龙%'
问题:sql="select * from tb_emp where name like '%?%'";报错
解决方案1:
String sql="select * from tb_emp where name like ?";
preparedStatement.setString(1,"%龙%");
like 'abc' 和 ='abc'从查询结果上来说,没有区别
如果使用模糊查询则传入参数包含通配符;如果是精确等值查询,则不包含通配符
解决方案2:
使用系统提供的函数concat用于实现字符串的拼接操作
String sql="select * from tb_emp where name like concat('%',?,'%')";
preparedStatement.setString(1,"龙");
public class Test2 {
public static void main(String[] args) throws Exception {
String sql="select * from tb_emp where name like concat('%',?,'%')";
Class.forName("com.mysql.cj.jdbc.Driver");
try (
final Connection connection = DriverManager.getConnection("jdbc:mysql:///test?serverTimezone=UTC", "root", "123456");
final PreparedStatement preparedStatement = connection.prepareStatement(sql);
) {
preparedStatement.setString(1,"龙");
final ResultSet resultSet = preparedStatement.executeQuery();
while(resultSet.next()){
System.out.println(resultSet.getLong(1)+"\t"+resultSet.getString(2));
}
}
}
}