ibatis中like的问题

 like在不同的数据库好像用法都不一样
select * from table where colName like '%' || #value# || '%'不起作用。按照官方的解释,如果你想要的查询是:

select * from foo where value like 'x%'
那么你在 xml 映射文件中可能会写:

select * from foo where value like #parm#
但是经过 ibatis 转换以后会变成:

select * from foo where value like ?
所以你就什么也查不到了。怎么解决呢?有两种方法,一是自己处理参数 "x%",也就是自己先在程序里面对传入的参数包裹一下,就像这样:

String param = "%" + param + "%"
然后再把 param 传给 ibatis,这方法确实有效,但会使你很容易搞不清楚什么时候在哪里加了 like 了。第二种方法就是写成:

select * from foo where value like #parm# || '%'(对我不起作用)
要使它对大小写不敏感,还可以写成:

select * from foo where upper(value) like '%%' || upper(#parm#) || '%%'(没有实验过)
总之,目前还没有比较满意的解决 like,大家有什么好办法吗?

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值