在 MySQL 中查詢逗號分隔字串的精確匹配
在處理包含逗號分隔字串的 MySQL 欄位時,查詢特定值通常會遇到挑戰。例如,當查詢字串中存在特定值的所有記錄時,您可能會無意中檢索到包含目標數字的其他值的記錄。
考慮以下查詢:
<code class="language-sql">select * from shirts where colors like '%1%'</code>
此查詢旨在檢索顏色為紅色的所有襯衫(color=1)。但是,它也會檢索顏色為灰色(=12)和橙色(=15)的襯衫,因為這些顏色包含數字 1。
為了解決這個問題,您可以改進查詢以確保它只選擇您要搜尋的精確顏色值。以下是兩種常用的方法:
1. 連接逗號
此方法包括在目標值的左側和右側新增逗號。這樣做可以確保搜尋字串只符合與所需值完全相等的那些值。
<code class="language-sql">select * from shirts where CONCAT(',', colors, ',') like '%,1,%'</code>
2. 使用 find_in_set
find_in_set
函數也可用來實現預期結果。此函數採用兩個參數:
當 find_in_set
傳回的值大於 0 時,表示目標值存在於字串中。這是一個範例查詢:
<code class="language-sql">select * from shirts where find_in_set('1', colors) > 0</code>
透過使用這兩種方法中的任何一種,您可以確保您的 MySQL 查詢準確地檢索您感興趣的精確顏色值的記錄,而不會拾取不需要的匹配項。
以上是如何在以逗號分隔的 MySQL 字串中查詢精確匹配?的詳細內容。更多資訊請關注PHP中文網其他相關文章!