Oracle模糊查询CONCAT参数个数无效

在使用MyBatis操作Oracle数据库的时候,写模糊查询突然发现原本在MySql中正确的代码,在Oracle中报错,参数个数无效

<if test="empId!=null and empId!=‘‘">
    and e.empId like CONCAT(‘%‘,#{empId},‘%‘)
</if>

异常信息;

经过查阅数个资料后得知Oracle的CONCAT函数不像MySql那样支持三个参数的拼接,需要把SQL语句修正为:

and e.empId like CONCAT(CONCAT(‘%‘,#{empId}),‘%‘)

或者

and e.empId like ‘%‘ || #{empId} ||‘%‘;

以上仅对Oracle有效!

PS:

  基础真的非常重要!!

  再简单的代码也要多敲几遍,这样才“有可能“成为你的一部分”!

原文地址:https://www.cnblogs.com/arebirth/p/excoconcat.html

时间: 2024-10-25 00:16:23

Oracle模糊查询CONCAT参数个数无效的相关文章

Oracle 模糊查询方法

在这个信息量剧增的时代,如何帮助用户从海量数据中检索到想要的数据,模糊查询是必不可少的.那么在Oracle中模糊查询是如何实现的呢? 一.我们可以在where子句中使用like关键字来达到Oracle模糊查询的效果:在Where子句中,可以对datetime.char.varchar字段类型的列用Like关键字配合通配符来实现模糊查询,以下是可使用的通配符: (1)% :零或者多个字符,使用%有三种情况 字段 like '%关键字%'字段包含"关键字"的记录 字段 like '关键字%

Oracle 模糊查询 优化

模糊查询是数据库查询中经常用到的,一般常用的格式如下: (1)字段  like '%关键字%'   字段包含"关键字“的记录   即使在目标字段建立索引也不会走索引,速度最慢 (2)字段  like '关键字%'      字段以"关键字"开始的记录   可以使用到在目标字段建立的升序索引 (3)字段 like '%关键字'      字段以"关键字“结束的记录    可以使用到目标字段建立的降序索引 对于无法使用索引的 '%关键字%' 模式,有没有办法优化呢,答案

8.mybatis动态SQL模糊查询 (多参数查询,使用parameterType)

多参数查询,使用parameterType.实例: 用户User[id, name, age] 1.mysql建表并插入数据 2.Java实体类 public class User { public User() { } public User(int id, String name, int age) { super(); this.id = id; this.name = name; this.age = age; } private int id; private String name;

mybatis : trim标签, “等于==”经验, CDATA标签 ,模糊查询CONCAT,LIKE

一.My Batis trim标签有点类似于replace效果. trim 属性, prefix:前缀覆盖并增加其内容 suffix:后缀覆盖并增加其内容 prefixOverrides:前缀判断的条件 suffixOverrides:后缀判断的条件 比如:Java SQL语句如下, select b.* from sys_menu b where 1 = 1 <trim suffix="WHERE" suffixOverrides="AND | OR">

oracle 模糊查询 (处理jsp页面传过来的条件)

oracle数据模糊查询的语句: SELECT m.MUSICID,m.MUSICNAME,m.MUSICPICTURE,m.MUSICLYRICS,m.MUSICINSTRUCTION FROM MUSIC m where m.musicname like '%见%'; 本来 我是打算通过 实体类(entity),数据访问层(dao),业务逻辑层(biz)封装后 在Action中调用模糊查询的方法  来实现 根据我输入的 关键字 来进行模糊查询. 试了好多SQL都没有用  提示 为 "非正确语

oracle模糊查询简述

--like模糊查询,通配符:'%'表示代替一个或多个字符,'_'表示代替一个字符select * from v_test where v_name like '_BCE%'; 转义字符:可以把通配符('%','_')转义为字符,而非其原意 select * from v_test where v_name like '\_BCE%' escape '\';--也可以把其他字符声明为转义字符select * from tt where v_name like 'S_BCE%' escape 'S

oracle 模糊查询中的转义字符用法

drop view aaa; create view aaa as select '_BCDE' A FROM DUAL UNION ALL SELECT 'ABCDE' FROM DUAL UNION ALL SELECT 'ACBDE' FROM DUAL; SELECT A FROM AAA WHERE A LIKE '_BCD%'; select a from aaa where a like '\_BCD%' ESCAPE '\'; ESCAPE 后面的字符表示是一个检索字符, 字符串

SQLite查询是的参数个数

oracle 模糊查询忽略大小写

select * from c_table t where upper(t.name) like '%F%';--将字段全转成大写 select * from c_table t where lower(t.name) like '%f%';--将字段全转成小写 select * from c_table t where t.name like upper('%f%') or t.name like lower('%F%');