在 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中文網其他相關文章!