AI 摘要
Oracle数据库中CONCAT函数仅支持两个参数,若需拼接多个字符串需嵌套调用。原代码DATA_TABLE_NAME LIKE CONCAT('%',#{tableName},'%')因传入三个参数导致ORA-00909错误,而MySQL兼容多参数。解决方法是嵌套调用CONCAT,如CONCAT(CONCAT('%',#{tableName}),'%'),确保符合Oracle语法规范。
今天在工作过程中遇到一个问题,模糊查询后台拼接的时候报错,错误异常为:ORA-00909:参数个数无效,简单分析了一下代码,问题可能出现在模糊查询拼凑SQL的时候。而常规在MySql中无异常,Oracle中会出现此问题。
问题代码
DATA_TABLE_NAME LIKE CONCAT('%',#{tableName},'%')解决示例
DATA_TABLE_NAME LIKE CONCAT(CONCAT('%',#{tableName}),'%')问题原因
在Oracle中CONCAT函数每次只能进行两个字符串的拼接,两个以上就会报错.
虽然看不懂,但也不影响我的热情!