首頁 >資料庫 >mysql教程 >如何在MySQL中有效率地從JSON數組中提取特定鍵值?

如何在MySQL中有效率地從JSON數組中提取特定鍵值?

Susan Sarandon
Susan Sarandon原創
2024-10-29 13:43:02542瀏覽

How to Efficiently Extract Specific Key Values from JSON Arrays in MySQL?

在 MySQL JSON 陣列中尋找特定鍵值

在 MySQL 中,在 JSON 物件陣列中尋找特定節點可能具有挑戰性。為了解決這個問題,您可以考慮使用 JSON_SEARCH 和 JSON_CONTAINS 函數。然而,組合這些函數來簡化查詢並不總是可行的。

MySQL 8.0 提供了一個使用 JSON_TABLE() 函數的解決方案,該函數從 JSON 文件建立一個虛擬派生表,有效地將其視為行和列。這使您能夠對 JSON 資料執行選擇和投影等操作。

為了進行演示,讓我們將範例資料插入表中:

<code class="sql">create table mytable ( mycol json );

insert into mytable set mycol = '[{"Race": "Orc", "strength": 14}, {"Race": "Knight", "strength": 7}]';</code>

您現在可以使用JSON_TABLE() 來建立一個虛擬表:

<code class="sql">SELECT j.*
FROM mytable,
JSON_TABLE(mycol, '$[*]' COLUMNS (
    race VARCHAR(10) PATH '$.Race',
    strength INT PATH '$.strength'
)) AS j;</code>

這將產生以下結果:

race strength
Orc 14
Knight 7

要檢索特定種族的強度,您可以使用WHERE 子句:

<code class="sql">SELECT j.strength
FROM mytable,
JSON_TABLE(mycol, '$[*]' COLUMNS (
    race VARCHAR(10) PATH '$.Race',
    strength INT PATH '$.strength'
)) AS j
WHERE j.race = 'Orc';</code>

這將傳回以下結果:

strength
14

但是,這種方法需要您在查詢中指定屬性字段,這可能不適合屬性定義未知的資料集。

以上是如何在MySQL中有效率地從JSON數組中提取特定鍵值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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