MySQL json相關(guān)函數(shù)及功能詳解
MySQL提供了一系列的JSON函數(shù),用于解析、提取、修改和操作JSON數(shù)據(jù)。以下是一些常用的JSON函數(shù)及其功能。
以下所有操作都使用該表(zone_test)用來(lái)演示:
一:JSON_OBJECT(key1,value1,key2,value2)
1、作用:
用來(lái)創(chuàng)建一個(gè)JSON對(duì)象??梢灾付ㄦI值對(duì)作為參數(shù),返回一個(gè)JSON對(duì)象。
鍵和值可以是字符串、數(shù)字、布爾值等。
2、使用:
創(chuàng)建一個(gè)JSON對(duì)象:
可以在INSERT或UPDATE語(yǔ)句中使用JSON_OBJECT()函數(shù)來(lái)插入或更新JSON字段的值:
INSERT INTO zone_test (name,age,drss_style) VALUES('clothes': '衛(wèi)衣', 'hat': '棒球帽', 'trousers': '牛仔褲', 'shoe': '板鞋'))
二:JSON_ARRAY(value,value1,value2)
1、作用:
創(chuàng)建一個(gè)JSON數(shù)組??梢灾付ǘ鄠€(gè)值作為參數(shù),返回一個(gè)JSON數(shù)組。
值可以是字符串、數(shù)字、布爾值等。
2、使用:
創(chuàng)建一個(gè)JSON數(shù)組
可以在INSERT或UPDATE語(yǔ)句中使用JSON_ARRAY()
函數(shù)來(lái)插入或更新JSON字段的值
INSERT INTO zone_test (name,age,drss_style,girl_friend) VALUES('王二麻子',48,JSON_OBJECT('帽子','棒球帽'),JSON_ARRAY('小紅','小黃','小紫'))
三:JSON_EXTRACT(json_doc, path)
1、作用:
從JSON文檔中提取指定路徑的值。
json_doc
是JSON文檔,path
是要提取的JSON鍵的路徑。
請(qǐng)注意,JSON鍵的路徑必須用引號(hào)括起來(lái),并且路徑的開(kāi)始必須是$
。
2、使用:
例如:我想要知道所有人的帽子都是什么?
SELECT name,JSON_EXTRACT(drss_style, '$.hat') as hat from zone_test
四:JSON_SET(json_doc, path, value)
1、作用:
設(shè)置JSON文檔中指定路徑的值。
如果路徑存在,則替換現(xiàn)有的值;如果路徑不存在,則添加新的鍵值對(duì)
請(qǐng)注意,JSON鍵的路徑必須用引號(hào)括起來(lái),并且路徑的開(kāi)始必須是$
2、使用:
例如:我想把李四的帽子改成“草帽”。
UPDATE zone_test SET drss_style = JSON_SET(drss_style,'$.hat','草帽') where name ='李四'
五:JSON_INSERT(json_doc, path, value)
1、作用:
在JSON文檔中指定路徑處插入一個(gè)新的鍵值對(duì)。
如果路徑存在,則插入新的鍵值對(duì);如果路徑不存在,則不做任何操作
請(qǐng)注意,JSON鍵的路徑必須用引號(hào)括起來(lái),并且路徑的開(kāi)始必須是$
。
2、使用:
例如:我想再drss_style新增一個(gè)新的鍵值對(duì),手表。
UPDATE zone_test SET drss_style = JSON_INSERT(drss_style,'$.watch','華為手表')
六:JSON_REMOVE(json_doc, path)
1、作用:
從JSON文檔中刪除指定路徑的鍵值對(duì)。
如果路徑存在,則刪除指定的鍵值對(duì);如果路徑不存在,則不做任何操作。
2、使用:
例如:我想刪除王二麻子的watch這個(gè)鍵值對(duì)。
UPDATE zone_test SET drss_style = JSON_REMOVE(drss_style,'$.watch') where name='王二麻子'
七:JSON_REPLACE(json_doc, path, value)
1、作用:
替換JSON文檔中指定路徑的值。
如果路徑存在,則替換現(xiàn)有的值;如果路徑不存在,則不做任何操作。
【跟JSON_SET的區(qū)別:json_set如果路徑不存在,就新增】
2、使用:
例如:修改王二麻子的帽子跟手表這2項(xiàng)
UPDATE zone_test SET drss_style = JSON_REPLACE(drss_style,'$.watch','小米手表') where name='王二麻子'; UPDATE zone_test SET drss_style = JSON_REPLACE(drss_style,'$.hat','太陽(yáng)帽') where name='王二麻子';
八:JSON_ARRAY_APPEND(json_doc, path, value)
1、作用:
在JSON文檔中指定路徑處的數(shù)組末尾追加一個(gè)新的值。
如果路徑存在且是一個(gè)數(shù)組,則在數(shù)組末尾追加新的值;
如果路徑不存在或不是一個(gè)數(shù)組,則不做任何操作。
2、使用:
例如:在boy_friend里追加一個(gè)數(shù)據(jù)
UPDATE zone_test SET drss_style = JSON_ARRAY_APPEND(drss_style,'$.boy_friend','吳磊') where name='王二麻子';
九:JSON_ARRAY_INSERT(json_doc, path, value)
1、作用:
在JSON文檔中指定路徑處的數(shù)組中插入一個(gè)新的值。
如果路徑存在且是一個(gè)數(shù)組,則在指定索引處插入新的值;
如果路徑不存在或不是一個(gè)數(shù)組,則不做任何操作。
2、使用:
例如:在霍建華跟吳磊中間插入一個(gè)黃凱。
UPDATE zone_test SET drss_style = JSON_ARRAY_INSERT(drss_style,'$.boy_friend[2]','黃凱') where name='王二麻子';
十:JSON_ARRAY_REMOVE(json_doc, path)
1、作用:
從JSON文檔中指定路徑處的數(shù)組中刪除一個(gè)值。
如果路徑存在且是一個(gè)數(shù)組,并且指定的索引處有一個(gè)值,則刪除該值;
如果路徑不存在或不是一個(gè)數(shù)組,或者指定的索引處沒(méi)有值,則不做任何操作。
2、使用:
例如:把boy_friend里的霍建華刪除掉。
UPDATE zone_test SET drss_style = JSON_ARRAY_REMOVE(drss_style,'$.boy_friend[1]') where name='王二麻子';
到此這篇關(guān)于MySQL json相關(guān)函數(shù)詳解的文章就介紹到這了,更多相關(guān)MySQL json相關(guān)函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL gh-ost DDL 變更工具的實(shí)現(xiàn)
本文主要介紹了MySQL gh-ost DDL變更工具的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-02-02mysql的聯(lián)合索引(復(fù)合索引)的實(shí)現(xiàn)
這篇文章主要介紹了mysql的聯(lián)合索引(復(fù)合索引)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03高性能MySQL讀書(shū)筆記 找出誰(shuí)持有鎖
周末重讀了一遍《高性能MySQL》,發(fā)現(xiàn)有些知識(shí)點(diǎn)看過(guò)便忘了,沒(méi)有實(shí)際動(dòng)手操作一遍就是記不牢,所以今天動(dòng)手操作了一下“找出誰(shuí)持有鎖”,并把實(shí)驗(yàn)步驟記錄下來(lái),有興趣的網(wǎng)友可以參照一二。2011-01-01windows下安裝mysql-8.0.18-winx64的教程(圖文詳解)
這篇文章主要介紹了windows下安裝mysql-8.0.18-winx64,需要的朋友可以參考下2019-12-12Navicat數(shù)據(jù)存放位置和備份數(shù)據(jù)庫(kù)路徑設(shè)置方式
這篇文章主要介紹了Navicat數(shù)據(jù)存放位置和備份數(shù)據(jù)庫(kù)路徑設(shè)置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01MySQL 5.7增強(qiáng)版Semisync Replication性能優(yōu)化
這篇文章主要介紹了MySQL 5.7增強(qiáng)版Semisync Replication性能優(yōu)化,本文著重講解支持發(fā)送binlog和接受ack的異步化、支持在事務(wù)commit前等待ACK兩項(xiàng)內(nèi)容,需要的朋友可以參考下2015-05-05MySQL解決Navicat設(shè)置默認(rèn)字符串時(shí)的報(bào)錯(cuò)問(wèn)題
本文主要介紹了MySQL解決Navicat設(shè)置默認(rèn)字符串時(shí)的報(bào)錯(cuò),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06