首頁 >資料庫 >mysql教程 >如何在 MySQL 中有效率地從 JSON 陣列中提取行?

如何在 MySQL 中有效率地從 JSON 陣列中提取行?

Linda Hamilton
Linda Hamilton原創
2024-12-08 17:18:12575瀏覽

How Can I Efficiently Extract Rows from JSON Arrays in MySQL?

在 MySQL 中從 JSON 數組中提取行

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中文網其他相關文章!

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