SQL模糊查询报:ORA-00909:参数个数无效问题的解决
用oracle数据库进行模糊查询时,
控制台报错如下图所示:
原因是因为敲的太快,语法写错了
正确的写法是
pd.code like concat(concat('%',#{keyword}),'%')
java.sql.SQLSyntaxErrorException: ORA-00909: 参数个数无效
用MyBatis进行多参数模糊查询的时候遇到这个异常,看了下打印日志,发现异常出在预编译之后,插入实参的时候。
==> Preparing: select role_id, role_name, note from t_role where role_name like concat('%', ?, '%') and note like concat('%', ?, '%')
2018-12-13 20:24:28,567 DEBUG [com.ss.learn.chapter3.mapper.RoleMapper.getRolesByIdAndNote] - ==> Parameters: 1(String), 1(String)
异常提示:参数个数无效。检查了下SQL语句
select role_id, role_name, note from t_role where role_name like concat('%', ?, '%') and note like concat('%', ?, '%')
发现问题出现在concat上,concat是连接两个字符串的函数,这里连接了三个,把SQL改成两个concat嵌套的
<select id="getRolesByIdAndNote" parameterType="map" resultType="role"> select role_id, role_name, note from t_role where role_name like concat(concat('%', #{roleName}), '%') and note like concat(concat('%', #{note}), '%') </select>
运行成功。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们!
相关推荐
-
SQL Server模糊查询的常见方法总结
在数据查询的时候,有完整查询和模糊查询之分.在Access和SQL Server中使用模糊查询有一下几种查询: 1.用_通配符查询 "_"号表示任意单个字符,该字符号只能匹配一个字符,利用"_"号可以作为通配符组成匹配模式进行查询."_"符号可以放在查询条件 的任意位置,且只能代表一个字符. 例如:查询数学成绩在大于或等于80的同学 selecT * FROM StuScore WHERE Math_Score like '8_' 2利用%通配符
-
SqlServer中模糊查询对于特殊字符的处理方法
今天在处理sql查询的时候遇到了like查询不到的问题,于是对问题进行剖析 问题: select * from v_workflow_rt_task_circulate where Name like '%[admin]请假申请[2017-02-13至2017-02-13]%' 查询不到,但是在数据库中是存在在这一条数据的. 修改后: select * from v_workflow_rt_task_circulate where Name like '%[[]admin]请假申请[[]2017
-
有关SQL模糊查询
一般模糊查询语句如下: 复制代码 代码如下: SELECT 字段 FROM 表 WHERE 某字段 Like 条件 其中关于条件,SQL提供了四种匹配模式: 1,% :表示任意0个或多个字符.可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示. 比如 SELECT * FROM [user] WHERE u_name LIKE '%三%' 将会把u_name为"张三","张猫三"."三脚猫","唐三藏"
-
Mybatis使用MySQL模糊查询时输入中文检索不到结果怎么办
项目开发中,在做Mybatis动态查询时,遇到了一个问题:MySQL在进行LIKE模糊查询时,输入英文可以正常检索出结果,但是输入中文后检索得到的结果为空. 由于是使用GET方式请求,所以为了确保中文不乱码,在控制台接收到请求参数后,对中文进行了一次编码. try { realName = new String(realName.getBytes("GBK"), "UTF-8"); } catch (UnsupportedEncodingException exce
-
SQL模糊查询报:ORA-00909:参数个数无效问题的解决
用oracle数据库进行模糊查询时, 控制台报错如下图所示: 原因是因为敲的太快,语法写错了 正确的写法是 pd.code like concat(concat('%',#{keyword}),'%') java.sql.SQLSyntaxErrorException: ORA-00909: 参数个数无效 用MyBatis进行多参数模糊查询的时候遇到这个异常,看了下打印日志,发现异常出在预编译之后,插入实参的时候. ==> Preparing: select role_id, role_name
-
mybatis的动态SQL和模糊查询实例详解
现在以一个例子来介绍mybatis的动态SQL和模糊查询:通过多条件查询用户记录,条件为姓名模糊匹配,并且年龄在某两个值之间. 新建表d_user: create table d_user( id int primary key auto_increment, name varchar(10), age int(3) ); insert into d_user(name,age) values('Tom',12); insert into d_user(name,age) values('Bob
-
mybatis模糊查询之bind标签和concat函数用法详解
1.二种方式都可以用来模糊查询,都能预防 SQL 注入.但是在更换数据库情况下,bind标签通用. <if test=" userName != null and userName !=""> and userName like concat('%' ,#{userName},'%') </if> 2.使用concat函数连接字符串,在mysql中这个函数支持多个参数,但是在oracle中这个函数只支持2个参数,由于不同数据库之间的语法差异,更换数据库
-
SQL查询语句通配符与ACCESS模糊查询like的解决方法
ACCESS的通配符和SQL SERVER的通配符比较===================================================ACCESS库的通配符为:* 与任何个数的字符匹配? 与任何单个字母的字符匹配 SQL Server中的通配符为:% 与任何个数的字符匹配_ 与单个字符匹配正文我今天在写个页面的时候,也很郁闷,表中明明有记录,但在ASP里就是搜索不到,理论的sql语句如下:Select * FROM t_food Where t_food.name
-
oracle sql语言模糊查询--通配符like的使用教程详解
oracle在Where子句中,可以对datetime.char.varchar字段类型的列用Like子句配合通配符选取那些"很像..."的数据记录,以下是可使用的通配符: % 零或者多个字符 _ 单一任何字符(下划线) \ 特殊字符 oracle10g以上支持正则表达式的函数主要有下面四个: 1,REGEXP_LIKE :与LIKE的功能相似 2,REGEXP_INSTR :与INSTR的功能相似 3,REGEXP_SUBSTR :与SUBSTR的功能相似 4,RE
-
解决一个pandas执行模糊查询sql的坑
查询引擎使用了presto,在sql中使用了模糊查询. engine = create_engine(presto_url,encoding='utf-8') sql_exe ="""select id,title,tags from source.base.table where tags like '%呵呵%' """ df = pd.read_sql_query(sql_exe,engine) 一直报错: unsupported forma
-
Mybatis模糊查询和动态sql语句的用法
Mybatis 模糊查询和动态sql语句 模糊查询 对数据库最常用的操作就是查询了,但是如何使用Mybatis进行模糊查询呢?下面先看一个简单的模糊查询 <select id="select01" resultMap="BasicResultMap"> SELECT * FROM oa_employee WHERE emp_name LIKE #{asd} </select> 这是一条伪模糊查询, 因为没有实现真正的模糊 "%&qu
-
Python使用sql语句对mysql数据库多条件模糊查询的思路详解
def find_worldByName(c_name,continent): print(c_name) print(continent) sql = " SELECT * FROM world WHERE 1=1 " if(c_name!=None): sql=sql+"AND ( c_name LIKE '%"+c_name+"%' )" if(continent!=None): sql=sql+" AND ( continent
随机推荐
- PhpDocumentor 2安装以及生成API文档的方法
- FCKEditor 表单提交时运行的代码
- jQuery简单实现禁用右键菜单
- 收集的比较全的automation服务器不能创建对象 异常原因和解决方法第1/2页
- 在实战中可能碰到的几种ajax请求方法详解
- vue的Virtual Dom实现snabbdom解密
- java servlet结合mysql搭建java web开发环境
- javascript瀑布流布局实现方法详解
- 全面解析Bootstrap表单使用方法(表单控件)
- asp.net(c#)两种随机数的算法,可用抽考题
- 同一页面多个商品倒计时JS 基于面向对象的javascript
- javascript中递归的两种写法
- jQuery UI Bootstrap是什么?
- js hover 定时器(实例代码)
- JavaScript中“过于”犀利地for/in循环使用示例
- 理解Java垃圾回收
- Android编程实现Toast只显示最后一条的方法
- Spring MVC学习笔记之json格式的输入和输出
- log4j的Appenders配置方法
- php生成QRcode实例