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-hant/n/369488.html