MySQL 查詢和逗號分隔的字串值:一種有針對性的方法
管理 MySQL 資料庫中以逗號分隔字串儲存的資料在檢索特定值時通常會帶來挑戰。 想像 COLORS
表中的 SHIRTS
欄位包含逗號分隔的數字,例如“1,2,5,12,15”,其中每個數字代表一種顏色。
簡單 LIKE 查詢的問題
諸如 SELECT * FROM SHIRTS WHERE COLORS LIKE '%1%'
之類的查詢旨在查找顏色為 1(紅色)的襯衫,但由於部分字符串匹配,也會錯誤地返回顏色為 12(灰色)和 15(橙色)的襯衫。
精確值檢索技術
要只分開顏色 1 的襯衫,我們需要更精確的方法:
方法 1:利用 CONCAT 進行精確配對
透過使用 CONCAT
函數策略性地添加逗號,我們可以確保完全匹配:
<code class="language-sql">SELECT * FROM SHIRTS WHERE CONCAT(',', COLORS, ',') LIKE '%,1,%'</code>
這會在 COLORS
字串的開頭和結尾添加逗號,從而允許精確搜尋「,1,」。
方法2:利用find_in_set函數
或者,find_in_set
函數提供了更直接的解:
<code class="language-sql">SELECT * FROM SHIRTS WHERE FIND_IN_SET('1', COLORS) > 0</code>
) 中找到搜尋字串(本例為「1」),FIND_IN_SET
COLORS
將傳回大於 0 的值。
這些方法提供了從 MySQL 查詢中以逗號分隔的字串中準確提取特定值的有效方法,避免了不精確 LIKE
語句的陷阱。 請記住,雖然這些解決方案有效,但標準化資料庫以避免逗號分隔值通常是資料完整性和查詢效能的最佳長期解決方案。
以上是如何在 MySQL 查詢中有效率地尋找逗號分隔字串中的特定值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!