處理單列中包含多個值的查詢
在這種情況下,我們遇到一個表,其中包含名為“ children」的列,該列儲存以逗號分隔的名稱。目標是檢索此列中存在指定子項(例如「Alex」)的記錄。
但是,使用簡單的相等性檢查(例如“WHERE Children = 'Alex'”)會失敗,因為有多個名稱存在於每個細胞中。基本的 LIKE 搜尋(“WHERE kids LIKE '%Alex%'”)會因部分匹配(例如“Alexandre”或“Diana”)而導致誤報。
為了解決這個挑戰,最佳方法是透過引入單獨的表來儲存子父關係來標準化資料結構。這將使我們能夠有效地執行連接並檢索所需的資訊。
儘管如此,如果規範化不可行,則會提出使用FIND_IN_SET 函數的解決方案:
WHERE FIND_IN_SET('Alex', children) > 0
此函數搜尋列值中的指定字串,如果該字串存在,則傳回正數。透過將此條件合併到 WHERE 子句中,我們可以識別列出「Alex」子項目的行。
以上是如何有效率地查詢包含逗號分隔值的資料庫列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!