MySQL 5.7 引入了強大的 JSON 函數,可以無縫操作 JSON 資料。然而,將 JSON 數組元素提取到行中已被證明具有挑戰性。
問題
將 JSON 陣列轉換為基於行的結構仍然是 MySQL 中的一個障礙。選項僅限於使用 JSON_EXTRACT() 手動提取單一元素或聯合多個查詢。這種方法既麻煩又容易出錯。
解決方案:MySQL 8 和 JSON_TABLE
MySQL 8 引入了 JSON_TABLE,這是一個處理 JSON 資料的綜合解決方案。它允許將 JSON 數組直接轉換為表行。
SELECT * FROM JSON_TABLE( '[5, 6, 7]', "$[*]" COLUMNS( Value INT PATH "$" ) ) data;
使用JSON_TABLE 作為通用分割器
除了行擷取之外,JSON_TABLE 還可以用作通用分割器字串分割器,MySQL 中字串分割器,MySQL 中字串缺少的功能。透過將分隔字串轉換為 JSON,可以輕鬆分離其組成部分。
set @delimited = 'a,b,c'; SELECT * FROM JSON_TABLE( CONCAT('["', REPLACE(@delimited, ',', '", "'), '"]'), "$[*]" COLUMNS( Value varchar(50) PATH "$" ) ) data;
結論
JSON_TABLE 為 MySQL 用戶提供了一種簡化的 JSON 轉換方法將數組轉換為行,從而無需複雜的聯合或手動提取。它也可以作為一個方便的字串分割工具,解決 MySQL 功能中的一個顯著差距。
以上是如何在 MySQL 中有效率地從 JSON 陣列中提取行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!