You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle SQL不使用LIKE实现指定模糊匹配的替代语句查询

Oracle SQL 不使用LIKE实现等效模糊匹配的方案

原SQL片段的匹配逻辑为满足以下两个条件任意其一:

  • 字符串中先出现大写字母B,之后任意位置出现小写字母l
  • 字符串中先出现大写字母L,之后任意位置出现小写字母b

以下是两种功能完全一致、不使用LIKE关键字的实现方案:

方案1:使用INSTR函数实现(性能更优)

INSTR是Oracle内置字符串查找函数,返回子串在目标字符串中的位置,未匹配返回0,嵌套调用即可实现顺序匹配逻辑:

WHERE (INSTR(c.name, 'B') > 0 AND INSTR(c.name, 'l', INSTR(c.name, 'B')) > 0)
   OR (INSTR(c.name, 'L') > 0 AND INSTR(c.name, 'b', INSTR(c.name, 'L')) > 0)

该方案和原LIKE的大小写敏感行为完全一致,无正则解析开销,适合大数据量查询场景。

方案2:使用REGEXP_LIKE正则函数实现(写法更简洁)

Oracle原生支持正则匹配函数REGEXP_LIKE,可以用更短的代码实现相同逻辑:

WHERE REGEXP_LIKE(c.name, 'B.*l|L.*b')

正则中B.*l表示B后跟随任意字符再跟随l,|表示或逻辑,默认大小写敏感,和原LIKE行为完全匹配。

内容的提问来源于stack exchange,提问作者oharujyu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 04:18:00