查询SQL拼写技巧

查询SQL一般涉及多个表查询,不同的条件可能作用在不同表的不同列上,为求SQL拼写简单,在不太影响效率情况下,不管是否需要添加查询条件,from后的表和where的表关联条件总是保留。

select t1.col1,t2.col2,t3.col3, t1.col
  from t1,t2,t3
 where t1.id1 = t2.id1
   and t2.id2 = t3.id2
   and t1.col1 = ?
   and t2.col2 between ? and ?
   and t3.col3 in(?,?,?,?)
   and t1.col like ?

1、查询条件为全部

单表查询时where后可能一个条件也没有,一般地在第一个条件加上1 = 1,之后每个条件都是“and col = ?”

假设前端条件在选择全部时传的是一个空格,每个条件可写成(' ' = ? || col1 = ?)

2、查询条件为多选

多个条件常见的是使用in,考虑到需要使用PreparedStatement,只能在sql中根据条件个数拼问号;

可考虑每个条件用逗号包围使用instr函数instr(?, ','||t3.col3||',') > 0,假设前端条件在选择全部时传的是一个空格,为了不用动态构造dao.query(sql,new Object[]{})中的参数数组,instr条件后的>0改为>" + (" ".equals(p) ? -1 : 0)使条件总是成立。

3、查询条件需模糊

左模糊like '%xxx'、右模糊like 'xxx%'或左右模糊like '%xxx%',根据模糊需要在查询条件字符串前后先拼上%,sql中仍使用问号

转载于:https://my.oschina.net/h2do/blog/284043

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值