首頁 >資料庫 >mysql教程 >如何有效地將 MySQL 中的逗號分隔清單反規範化以實現搜尋引擎整合?

如何有效地將 MySQL 中的逗號分隔清單反規範化以實現搜尋引擎整合?

Barbara Streisand
Barbara Streisand原創
2025-01-06 11:52:40824瀏覽

How Can I Efficiently Denormalize Comma-Separated Lists in MySQL for Search Engine Integration?

解開MySQL 中的逗號分隔清單以實現無縫整合

問題:

在非標準化表中,列包含充當單獨表的外鍵的逗號分隔清單。當將數據整合到缺乏過程語言支援的搜尋引擎時,這就帶來了挑戰。目標是將這個清單分成多行,最終產生一個非規範化的表。

解決方案:

雖然MySQL 不提供本質上返回表的函數,但是一個聰明的方法解決方案可以實施:

  1. 準備資料:首先,識別非標準化表(part_id) 的主鍵和逗號分隔列(material)。
  2. 擷取逗號分隔值: 利用查詢從逗號擷取單一值分開的清單。例如:
SELECT part_id, REGEXP_SUBSTR(`material`, '[^,]+', 1) AS `material_id`
FROM unnormalized_table

此查詢將逗號分隔清單中的第一個值指派給material_id列,為每個part_id建立一個新行。

  1. 重複此過程:重複上述查詢以從逗號分隔清單中擷取後續值。使用模式定義清單中值的位置,例如正規表示式中的 2(第二個值)或 3(第三個值)。
  2. 合併結果: 使用 UNION ALL 將所有單獨查詢的結果合併到一個表格中。這會將多行合併為所需的非規範化格式。

範例:

將此解決方案應用於問題陳述中提供的範例將產生以下結果:

part_id material_id
339 1
339 2
970 2

結論:

利用字串運算和子查詢的組合,可以對MySQL 中的逗號分隔清單進行非規範化。該技術可以將此類數據無縫整合到不支援高級製程語言功能的各種應用程式中。

以上是如何有效地將 MySQL 中的逗號分隔清單反規範化以實現搜尋引擎整合?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn