在 SQL 中组合 LIKE
和 IN
:直接组合的替代方法
SQL 的 LIKE
运算符有助于模式匹配,而 IN
检查一组值中的成员资格。 虽然直接组合不可用,但存在有效的替代方案来处理多个 LIKE
条件或将 LIKE
与一组值组合。
多种LIKE
条件的挑战
将多个 OR
语句与 LIKE
一起使用会变得笨拙并且对于许多模式来说可能效率低下:
<code class="language-sql">WHERE something LIKE 'bla%' OR something LIKE '%foo%' OR something LIKE 'batz%'</code>
全文搜索:强大的解决方案
对于需要多个 LIKE
条件或 LIKE
和一组值的组合的场景,全文搜索 (FTS) 提供了一种更好的方法。 Oracle 和 SQL Server 都提供 FTS 功能。
Oracle 的 FTS 实施
Oracle 使用 CONTAINS
关键字配合 OR
运算符来达到预期的效果:
<code class="language-sql">WHERE CONTAINS(t.something, 'bla OR foo OR batz', 1) > 0</code>
SQL Server 的 FTS 实现
SQL Server 也使用 CONTAINS
,但模式匹配的语法略有不同:
<code class="language-sql">WHERE CONTAINS(t.something, '"bla*" OR "foo*" OR "batz*"')</code>
重要提示:为了获得最佳 FTS 性能,请确保使用全文索引正确索引相关列(这些示例中的 t.something
)。
延伸阅读
以上是SQL 可以组合'LIKE”和'IN”运算符吗?如果不能,有哪些替代方案?的详细内容。更多信息请关注PHP中文网其他相关文章!