在没有 LIKE 的情况下检查 Oracle 中字符串中的子字符串

新手上路,请多包涵

如何在不使用 LIKE 的情况下检查 Oracle 中字符串中的子字符串?假设我想从表中选择姓氏中包含字母“z”的所有用户:

 SELECT * FROM users WHERE last_name LIKE '%z%';

那会起作用,但我不想使用 LIKE。还有其他我可以使用的功能吗?

原文由 Richard Knop 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 549
2 个回答

我猜你问的原因是性能?有 instr 函数。但这在幕后可能几乎相同。

也许您可以查看 全文搜索

作为最后的手段,您将查看缓存或预先计算的列/索引视图。

原文由 wefwfwefwe 发布,翻译遵循 CC BY-SA 3.0 许可协议

您可以使用 INSTR 以这种方式执行此操作:

 SELECT * FROM users WHERE INSTR(LOWER(last_name), 'z') > 0;

如果子字符串不在字符串中,则 INSTR 返回零。

出于兴趣,你为什么不想用like?

编辑:我冒昧地使搜索不区分大小写,这样您就不会错过 Bob Zebidee。 :-)

原文由 darreljnz 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进