在MySQL 中的逗號分隔欄位中搜尋
在MySQL 中,可能會出現資料以某些逗號分隔格式儲存的情況,儘管建議的做法不建議這樣做。當嘗試在此類字段中執行精確搜尋時,這帶來了挑戰。考慮以下範例:
一個表包含一個字段,其中來自另一個表的值存儲為逗號分隔的列表:
12,13,14,16
當前的任務是在該字段中搜尋特定值使用以下查詢的欄位:
SELECT ... WHERE field LIKE '%1%'
但是,由於資料的性質,此類查詢將符合幾乎所有條目,因為大多數常見ID 都在一個狹窄的範圍內。
為了解決這個問題,需要進行更具體的搜尋。考慮在 LIKE 條件中使用 %,1,%,而不是使用 %1%。這將匹配前面和後面都有逗號的值。
不幸的是,這種方法對逗號分隔清單中的第一個和最後一個值有限制,因為它們不會與模式相符。
因此,需要採取不同的方法。 MySQL 提供了一個強大的函數 FIND_IN_SET,它允許在逗號分隔清單中進行搜尋:
SELECT ... WHERE FIND_IN_SET('1', field)
使用 FIND_IN_SET 將傳回指定值在逗號分隔清單中的位置,如果值不存在。即使在非理想的資料結構中,這也能實現精確且有效率的搜尋。
以上是如何在 MySQL 中搜尋逗號分隔欄位中的特定值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!