在Ready API的JDBC查询中使用带属性的LIKE语句报错求助
在ReadyAPI JDBC查询中使用带参数的LIKE语句解决方法
我之前在ReadyAPI里处理JDBC查询的LIKE语句时也踩过一模一样的坑,给你几个亲测有效的解决思路:
方法一:在属性值中直接包含通配符
把你定义的ser属性值设置为CLI%(或者你需要的任意带%的格式),然后SQL语句写为:select * from database where service like :ser这种方式利用JDBC参数绑定的特性,让驱动完整解析带通配符的参数值,既不会有语法错误,还能避免SQL注入风险,是最推荐的做法。
方法二:在SQL语句中用字符串拼接函数
如果不想修改属性值,也可以在SQL里把参数和通配符拼接起来,不同数据库的拼接语法略有不同:- MySQL/MariaDB 使用
CONCAT函数:select * from database where service like CONCAT(:ser, '%') - Oracle 使用
||拼接符:select * from database where service like :ser || '%' - SQL Server 使用
+拼接符:select * from database where service like :ser + '%'
- MySQL/MariaDB 使用
为什么你之前的写法会报错?
ReadyAPI的JDBC参数绑定会把:ser识别为一个完整的参数占位符,而你写的:ser%会被数据库当成一个未定义的参数名,自然会抛出语法错误。必须让参数占位符和通配符分开处理,要么把通配符整合到参数值里,要么用数据库的字符串拼接逻辑把两者结合起来。
内容的提问来源于stack exchange,提问作者Patrick D
相关产品推荐
相关产品推荐

