PreparedStatement 使用like 模糊查询
查询 模糊 like 使用 PreparedStatement
2023-09-11 14:19:34 时间
PreparedStatement 使用like
在使用PreparedStatement进行模糊查询的时候废了一番周折,以前一直都没有注意这个问题。
一般情况下我们进行精确查询,sql语句类似:select * from table where name =?,然后调用 PreparedStatement的setString等方法给?指定值。
那么模糊查询的时候应该怎么写呢?
我首先尝试了:select * from customer where name like ‘%?%’。
此时程序报错,因为?被包含在了单引号中,PreparedStatement并不视它为一个参数。
后来上网查了相关的一些资料,发现可以这样写select * from table where name like ?;但是在指定参数的时候把?指定为”%”+name+”%”,name是指定的查询条件。这样就OK了。
一般情况下,我总是潜意识的认定了?就是取代所指定的参数,但是实际上我们可以对指定的参数进行了一定的包装之后再传给?,比如这里我们在参数的前后都加了一个%,然后再传给?
1 String expr = "select * from table where url like ?"; 2 pstmt = con.prepareStatement(expr); 3 String a="a"; 4 pstmt.setString(1, "%"+a+"%");//自动添加单引号 (包装后的参数) 5 pstmt.execute(); 6 System.out.println(pstmt.toString());//打印sql 7 //会默认生成sql: select * from table where url like '%http%'
相关文章
- EntityFramework之原始查询如何查询未映射的值,你又知道多少?
- Linux中正则表达式和字符串的查询、替换(tr/diff/wc/find)
- Solr之精确、匹配、排序、模糊查询-yellowcong
- Mysql模糊查询Like传递参数的语句
- Oracle 用Drapper进行like模糊传参查询需要在参数值前后带%符合
- 加密后的数据如何进行模糊查询?
- [转]Hibernate查询对象所有字段,单个字段 ,几个字段取值的问题
- Elasticsearch模糊查询单字段多字段
- printk函数 用查询来调试
- 微信小程序云开发实现模糊查询需求
- sql查询之模糊查询
- SuperMap iObject入门开发系列之六管线区域查询
- SQL like使用 模糊查询
- Android程序猿必掌握的sqlite数据库连表查询
- (3.13)mysql基础深入——mysql慢查询日志分析工具之mysqldumpslow
- sqlserver查询结果复制到Excel 横杠变日期问题
- 亿级别记录的mongodb分页查询java代码实现
- gridLookUpEdit字典控件 模糊查询
- 工具及方法 - 查询IP信息