MySQL解析JSON

JSON(JavaScript Object Notation)是一種輕量級數據交換格式,MySQL在5.7版本之後開始支持JSON數據類型。本文將由多個方面詳細闡述MySQL解析JSON的使用方法。

一、MySQL解析JSON函數

MySQL提供了多個函數來操作JSON類型數據,以下是常用的幾個函數:

1. JSON_OBJECT:用於創建JSON對象,接受key-value參數,例如:

SELECT JSON_OBJECT('a', 1, 'b', 'hello', 'c', NOW()) AS json_obj;

2. JSON_ARRAY:用於創建JSON數組,接受多個任意類型參數,例如:

SELECT JSON_ARRAY(1, 'hello', NOW()) AS json_arr;

3. JSON_EXTRACT:用於提取JSON數據中的值。接受兩個參數,第一個是JSON數據,第二個是提取路徑,例如:

SELECT JSON_EXTRACT('{"a": 1, "b": "hello", "c": {"d": true}}', '$.a') AS val;

如果JSON數據是在表中存儲的,則需要使用table.column的形式指定列名,例如:

SELECT JSON_EXTRACT(column_name, '$.a') FROM table_name;

二、MySQL解析JSON字元串所有的key

如果我們有一個包含多個JSON對象的JSON數組,我們可以使用JSON_KEYS函數獲取數組中所有JSON對象的key。例如:

SELECT JSON_KEYS('[{"name":"John", "age":30}, {"name":"Jane", "city":"New York"}]') AS keys;

三、MySQL解析JSON數組

我們可以使用JSON_ARRAYAGG函數將表中的多行數據合併到一個JSON數組中,例如:

SELECT JSON_ARRAYAGG(JSON_OBJECT('name', name, 'age', age)) FROM table_name;

四、MySQL解析JSON格式欄位

有時候我們需要在JSON數據中查詢某個屬性是否存在,我們可以使用JSON_CONTAINS函數來判斷。例如:

SELECT * FROM table_name WHERE JSON_CONTAINS(column_name, '{"key": "value"}');

五、MySQL解析JSON數據

我們可以使用JSON_TABLE函數將JSON數據解析為表格形式,並提取其中的數據。例如:

SELECT * FROM JSON_TABLE('{"a": 1, "b": "hello"}', '$' COLUMNS(a INT PATH '$.a', b VARCHAR(20) PATH '$.b')) AS json_table;

六、MySQL解析JSON實例

接下來我們使用一個實例來演示如何解析JSON數據。下面的表包含了每個人的姓名、年齡和工作信息,其中工作信息為JSON格式。

CREATE TABLE person (
  id INT PRIMARY KEY,
  name VARCHAR(50) NOT NULL,
  age INT,
  job_info JSON
);
INSERT INTO person VALUES 
(1, 'John', 30, '{"company": "Google", "position": "Software Engineer", "salary": 10000}'),
(2, 'Jane', 25, '{"company": "Microsoft", "position": "Product Manager", "salary": 8000}');

查找工資大於9000的人的姓名和公司:

SELECT name, JSON_EXTRACT(job_info, '$.company') AS company
FROM person
WHERE JSON_EXTRACT(job_info, '$.salary') > 9000;

更新John的工資:

UPDATE person
SET job_info = JSON_SET(job_info, '$.salary', 12000)
WHERE name = 'John';

七、MySQL解析JSON字元串數組

我們可以使用JSON_TABLE函數來解析JSON字元串數組,例如:

SELECT * FROM JSON_TABLE('[{"id": 1, "name": "John"}, {"id": 2, "name": "Jane"}]', '$[*]' COLUMNS(id INT PATH '$.id', name VARCHAR(20) PATH '$.name')) AS json_table;

八、MySQL解析JSON字元串返回null

如果JSON數據中沒有我們所需的屬性,使用JSON_EXTRACT函數會返回null。如果我們需要返回默認值,可以使用JSON_EXTRACT函數的第三個參數,例如:

SELECT JSON_EXTRACT(column_name, '$.not_existed', 'default_value') FROM table_name;

九、MySQL解析JSON中某個屬性

如果我們只需要在JSON對象中提取某個屬性的值,可以使用->符號,例如:

SELECT job_info->'$.salary' AS salary FROM person;

以上就是MySQL解析JSON的相關內容,通過本文的介紹,你可以掌握MySQL解析JSON數據的各種用法,並靈活運用到自己的項目中。

原創文章,作者:ILQNM,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/369488.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
ILQNM的頭像ILQNM
上一篇 2025-04-13 11:45
下一篇 2025-04-13 11:45

相關推薦

  • 如何修改mysql的埠號

    本文將介紹如何修改mysql的埠號,方便開發者根據實際需求配置對應埠號。 一、為什麼需要修改mysql埠號 默認情況下,mysql使用的埠號是3306。在某些情況下,我們需…

    編程 2025-04-29
  • Python操作MySQL

    本文將從以下幾個方面對Python操作MySQL進行詳細闡述: 一、連接MySQL資料庫 在使用Python操作MySQL之前,我們需要先連接MySQL資料庫。在Python中,我…

    編程 2025-04-29
  • JSON的MD5

    在Web開發過程中,JSON(JavaScript Object Notation)是最常用的數據格式之一。MD5(Message-Digest Algorithm 5)是一種常用…

    編程 2025-04-29
  • 使用Java將JSON寫入HDFS

    本篇文章將從以下幾個方面詳細闡述Java將JSON寫入HDFS的方法: 一、HDFS簡介 首先,先來了解一下Hadoop分散式文件系統(HDFS)。HDFS是一個可擴展性高的分散式…

    編程 2025-04-29
  • MySQL遞歸函數的用法

    本文將從多個方面對MySQL遞歸函數的用法做詳細的闡述,包括函數的定義、使用方法、示例及注意事項。 一、遞歸函數的定義 遞歸函數是指在函數內部調用自身的函數。MySQL提供了CRE…

    編程 2025-04-29
  • MySQL bigint與long的區別

    本文將從數據類型定義、存儲空間、數據範圍、計算效率、應用場景五個方面詳細闡述MySQL bigint與long的區別。 一、數據類型定義 bigint在MySQL中是一種有符號的整…

    編程 2025-04-28
  • 如何使用Newtonsoft datatable轉Json

    Newtonsoft DataTable 是一個基於.NET的JSON框架,也是一個用於序列化和反序列化JSON的強大工具。 在本文中,我們將學習如何使用Newtonsoft Da…

    編程 2025-04-28
  • MySQL左連接索引不生效問題解決

    在MySQL資料庫中,經常會使用左連接查詢操作,但是左連接查詢中索引不生效的情況也比較常見。本文將從多個方面探討MySQL左連接索引不生效問題,並給出相應的解決方法。 一、索引的作…

    編程 2025-04-28
  • JPRC – 輕鬆創建可讀性強的 JSON API

    本文將介紹一個全新的 JSON API 框架 JPRC,通過該框架,您可以輕鬆創建可讀性強的 JSON API,提高您的項目開發效率和代碼可維護性。接下來將從以下幾個方面對 JPR…

    編程 2025-04-27
  • CentOS 7在線安裝MySQL 8

    在本文中,我們將介紹如何在CentOS 7操作系統中在線安裝MySQL 8。我們會從安裝環境的準備開始,到安裝MySQL 8的過程進行詳細的闡述。 一、環境準備 在進行MySQL …

    編程 2025-04-27

發表回復

登錄後才能評論