Oracle PL/SQL中如何在带%通配符的LIKE语句中使用变量
Oracle PL/SQL中LIKE子句传入带通配符变量的方法
你原有代码的核心错误是Oracle使用||作为字符串拼接操作符,不支持+做字符串拼接——+在Oracle中仅用于数值运算,直接用它拼接%和变量会触发隐式类型转换错误,无法实现预期的模糊匹配逻辑。
正确写法
直接通过||将前后的%通配符与目标变量拼接后传入LIKE条件即可,完全保留通配符匹配能力:
declare variables VARCHAR2(200):= 'exemple'; V1 integer ; BEGIN select COUNT(*) into V1 from user_source where name LIKE '%' || variables || '%'; DBMS_OUTPUT.PUT_LINE(V1); END; /
等价替代写法
如果不想用拼接符,也可以用Oracle内置的CONCAT函数实现相同效果。注意Oracle的CONCAT函数仅支持传入2个参数,拼接三段内容需要嵌套调用:
-- 与上面拼接写法逻辑完全一致 where name LIKE CONCAT(CONCAT('%', variables), '%')
补充提示:如果变量值本身包含
%、_这类LIKE语法里的特殊通配符,且你需要把这些字符作为普通文本匹配,需要额外加ESCAPE关键字定义转义符做转义处理,无特殊字符的常规模糊匹配场景直接用上述写法即可。
内容的提问来源于stack exchange,提问作者Mohamedmehdi Ellouze
相关产品推荐
相关产品推荐

