MySQL 查詢:精確定位逗號分隔字串中的值
許多資料庫使用包含逗號分隔值 (CSV) 的欄位。 在查詢這些字串中的特定值時,這通常會帶來挑戰。 考慮 COLORS
表中的 SHIRTS
欄位。 簡單的 LIKE
查詢(例如 SELECT * FROM SHIRTS WHERE COLORS LIKE '%1%'
)可能會產生不準確的結果,傳回其中「1」是較大值的一部分(例如「12」或「15」)的條目。
要準確檢索顏色為「1」的襯衫,請避免部分匹配。 這裡有兩個有效的策略:
方法一:新增逗號精準匹配
此方法涉及在比較之前在 CSV 字串兩側添加逗號。 這可確保僅符合完整的值:
<code class="language-sql">SELECT * FROM SHIRTS WHERE CONCAT(',', COLORS, ',') LIKE '%,1,%'</code>
透過新增前導和尾隨逗號,只會選擇字串中存在 ',1,' 的條目。
方法 2:利用 FIND_IN_SET
FIND_IN_SET
函數提供了更直接的解決方案。 它標識逗號分隔字串中子字串的位置,如果找到則傳回非零值:
<code class="language-sql">SELECT * FROM SHIRTS WHERE FIND_IN_SET('1', COLORS) > 0</code>
在處理數字識別碼或顏色代碼時,此方法特別有用。 它直接檢查 COLORS
字串中是否存在「1」作為不同值。
以上是如何使用 MySQL 有效率地尋找逗號分隔字串中的特定值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!