java.sql.SQLSyntaxErrorException: ORA-00909: 参数个数无效

问题:

在@Select里采用Contact('%',#name,'%')报错参数个数无效

原因:

回想以前用Mysql的时候就是这样用的,没有问题,在这里就出问题了,所以确定问题在oracle数据库上,经过查询得知,oracle和mysql的concat函数不太一样。

一、函数的使用参数不同

Mysql支持多个字符串拼接:

CONCAT(str1,str2,...)

Oralce只支持两个字符串的拼接,若想拼接多个字符串可以嵌套使用concat

CONCAT(str1,str2)

二、参数中有Null的处理方式不同

Mysql:返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。

Oralce:如有任何一个参数为NULL ,则返回值拼接后的字符串。

三、其它方面

Mysql:如果所有参数均为非二进制字符串,则结果为非二进制字符串。

如果自变量中含有任一二进制字符串,则结果为一个二进制字符串。

Oracle:如果CONCAT中连接的值不是字符串,Oracle会尝试将其转换为字符串

注:Oracle拼接字符串还可以使用"||",当参数为Null时,返回值拼接后的字符串。

解决:

a.name like concat('%',#{name},'%')  改成  a.name like concat(concat('%',#{name}),'%')

相关推荐
XYCMS1 天前
PHP 外贸网站标题怎么用英文分割生成带杠号“-”的短网址
开发语言·php
csdn_aspnet1 天前
Java常用算法深度解析:从集合框架到并发编程
java·算法
云游云记1 天前
php设计模式总结
开发语言·设计模式·php
sheji34161 天前
【开题答辩全过程】以 基于j2ee的问卷调查系统为例,包含答辩的问题和答案
java·java-ee
计算机学姐1 天前
基于SpringBoot的自习室座位预定系统【预约选座+日期时间段+协同过滤推荐算法+数据可视化统计】
java·vue.js·spring boot·后端·spring·信息可视化·tomcat
Thomas_YXQ1 天前
Unity3D中提升AssetBundle加载速度的详细指南
java·spring boot·spring·unity·性能优化·游戏引擎·游戏开发
2301_788662401 天前
C++中的代理模式高级应用
开发语言·c++·算法
嫂子开门我是_我哥1 天前
第十七节:项目实战1:猜数字游戏(模块化开发实现)
开发语言·python·算法·游戏
啊阿狸不会拉杆1 天前
《计算机操作系统》第十二章 - 保护和安全
开发语言·网络·c++·算法·安全·计算机组成原理·计算机操作系统
多米Domi0111 天前
0x3f 第43天 黑马点评全量复习一遍 + 栈两题
开发语言·数据结构·python·算法·leetcode