在逗號分隔的MySQL字串中匹配特定值
處理包含逗號分隔值的表時,通常需要隔離這些字串中的特定值。但是,使用帶有通配符字元 (%) 的 LIKE 運算子可能會導致意外匹配。
考慮 SHIRTS 表中的 COLORS 字段,其中包含諸如 '1,2,5,12,15' 之類的值。類似於 "SELECT * FROM shirts WHERE colors LIKE '%1%'" 的查詢試圖尋找所有顏色為紅色 (color=1) 的襯衫。但是,它也會意外地檢索顏色為灰色 (color=12) 和橘色 (color=15) 的襯衫。
解:
1. 連結逗號:
經典的解決方案是在字串的左側和右側連接逗號:
<code class="language-sql">SELECT * FROM shirts WHERE CONCAT(',', colors, ',') LIKE '%,1,%'</code>
這會在字串之前和之後添加一個逗號,確保只選擇精確匹配 (color=1)。
2. 使用 find_in_set 函數:
或者,可以使用 find_in_set 函數在逗號分隔的字串中搜尋特定值:
<code class="language-sql">SELECT * FROM shirts WHERE find_in_set('1', colors) > 0</code>
如果在字串中找到指定的值,此函數將傳回非零值,從而有效地隔離顏色為 color=1 的襯衫。
以上是如何準確地匹配逗號分隔的MySQL字串中的特定值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!