針對逗號分隔值最佳化 MySQL 查詢
讓我們檢查一個 SHIRTS
表,其中的 COLORS
欄位儲存以逗號分隔的數字顏色代碼。 簡單的 LIKE
查詢可能會產生不準確的結果:
<code class="language-sql">SELECT * FROM shirts WHERE colors LIKE '%1%'</code>
此查詢傳回 colors
欄位中任意位置包含「1」的襯衫,包括顏色代碼為 1、12 或 15 的襯衫。要只查找顏色代碼為 1 的襯衫,我們需要更精確的方法。
一種有效的技術是在比較之前在 colors
字串兩側添加逗號:
<code class="language-sql">SELECT * FROM shirts WHERE CONCAT(',', colors, ',') LIKE '%,1,%'</code>
這可確保僅符合由逗號精確分隔的顏色代碼 1。
另一個有效的方法是使用 FIND_IN_SET()
函數:
<code class="language-sql">SELECT * FROM shirts WHERE FIND_IN_SET('1', colors) > 0</code>
FIND_IN_SET()
直接檢查 colors
欄位中逗號分隔清單中是否存在“1”,提供準確的結果。 這種方法因其清晰和高效而受到普遍青睞。
以上是如何有效率地查詢 MySQL 中逗號分隔值欄位的精確匹配?的詳細內容。更多資訊請關注PHP中文網其他相關文章!