MySQL json相關函數及功能詳解
MySQL提供了一系列的JSON函數,用于解析、提取、修改和操作JSON數據。以下是一些常用的JSON函數及其功能。
以下所有操作都使用該表(zone_test)用來演示:
一:JSON_OBJECT(key1,value1,key2,value2)
1、作用:
用來創(chuàng)建一個JSON對象。可以指定鍵值對作為參數,返回一個JSON對象。
鍵和值可以是字符串、數字、布爾值等。
2、使用:
創(chuàng)建一個JSON對象:
可以在INSERT或UPDATE語句中使用JSON_OBJECT()函數來插入或更新JSON字段的值:
INSERT INTO zone_test (name,age,drss_style) VALUES('clothes': '衛(wèi)衣', 'hat': '棒球帽', 'trousers': '牛仔褲', 'shoe': '板鞋'))
二:JSON_ARRAY(value,value1,value2)
1、作用:
創(chuàng)建一個JSON數組??梢灾付ǘ鄠€值作為參數,返回一個JSON數組。
值可以是字符串、數字、布爾值等。
2、使用:
創(chuàng)建一個JSON數組
可以在INSERT或UPDATE語句中使用JSON_ARRAY()
函數來插入或更新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鍵的路徑。
請注意,JSON鍵的路徑必須用引號括起來,并且路徑的開始必須是$
。
2、使用:
例如:我想要知道所有人的帽子都是什么?
SELECT name,JSON_EXTRACT(drss_style, '$.hat') as hat from zone_test
四:JSON_SET(json_doc, path, value)
1、作用:
設置JSON文檔中指定路徑的值。
如果路徑存在,則替換現有的值;如果路徑不存在,則添加新的鍵值對
請注意,JSON鍵的路徑必須用引號括起來,并且路徑的開始必須是$
2、使用:
例如:我想把李四的帽子改成“草帽”。
UPDATE zone_test SET drss_style = JSON_SET(drss_style,'$.hat','草帽') where name ='李四'
五:JSON_INSERT(json_doc, path, value)
1、作用:
在JSON文檔中指定路徑處插入一個新的鍵值對。
如果路徑存在,則插入新的鍵值對;如果路徑不存在,則不做任何操作
請注意,JSON鍵的路徑必須用引號括起來,并且路徑的開始必須是$
。
2、使用:
例如:我想再drss_style新增一個新的鍵值對,手表。
UPDATE zone_test SET drss_style = JSON_INSERT(drss_style,'$.watch','華為手表')
六:JSON_REMOVE(json_doc, path)
1、作用:
從JSON文檔中刪除指定路徑的鍵值對。
如果路徑存在,則刪除指定的鍵值對;如果路徑不存在,則不做任何操作。
2、使用:
例如:我想刪除王二麻子的watch這個鍵值對。
UPDATE zone_test SET drss_style = JSON_REMOVE(drss_style,'$.watch') where name='王二麻子'
七:JSON_REPLACE(json_doc, path, value)
1、作用:
替換JSON文檔中指定路徑的值。
如果路徑存在,則替換現有的值;如果路徑不存在,則不做任何操作。
【跟JSON_SET的區(qū)別:json_set如果路徑不存在,就新增】
2、使用:
例如:修改王二麻子的帽子跟手表這2項
UPDATE zone_test SET drss_style = JSON_REPLACE(drss_style,'$.watch','小米手表') where name='王二麻子'; UPDATE zone_test SET drss_style = JSON_REPLACE(drss_style,'$.hat','太陽帽') where name='王二麻子';
八:JSON_ARRAY_APPEND(json_doc, path, value)
1、作用:
在JSON文檔中指定路徑處的數組末尾追加一個新的值。
如果路徑存在且是一個數組,則在數組末尾追加新的值;
如果路徑不存在或不是一個數組,則不做任何操作。
2、使用:
例如:在boy_friend里追加一個數據
UPDATE zone_test SET drss_style = JSON_ARRAY_APPEND(drss_style,'$.boy_friend','吳磊') where name='王二麻子';
九:JSON_ARRAY_INSERT(json_doc, path, value)
1、作用:
在JSON文檔中指定路徑處的數組中插入一個新的值。
如果路徑存在且是一個數組,則在指定索引處插入新的值;
如果路徑不存在或不是一個數組,則不做任何操作。
2、使用:
例如:在霍建華跟吳磊中間插入一個黃凱。
UPDATE zone_test SET drss_style = JSON_ARRAY_INSERT(drss_style,'$.boy_friend[2]','黃凱') where name='王二麻子';
十:JSON_ARRAY_REMOVE(json_doc, path)
1、作用:
從JSON文檔中指定路徑處的數組中刪除一個值。
如果路徑存在且是一個數組,并且指定的索引處有一個值,則刪除該值;
如果路徑不存在或不是一個數組,或者指定的索引處沒有值,則不做任何操作。
2、使用:
例如:把boy_friend里的霍建華刪除掉。
UPDATE zone_test SET drss_style = JSON_ARRAY_REMOVE(drss_style,'$.boy_friend[1]') where name='王二麻子';
到此這篇關于MySQL json相關函數詳解的文章就介紹到這了,更多相關MySQL json相關函數內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
windows下安裝mysql-8.0.18-winx64的教程(圖文詳解)
這篇文章主要介紹了windows下安裝mysql-8.0.18-winx64,需要的朋友可以參考下2019-12-12MySQL 5.7增強版Semisync Replication性能優(yōu)化
這篇文章主要介紹了MySQL 5.7增強版Semisync Replication性能優(yōu)化,本文著重講解支持發(fā)送binlog和接受ack的異步化、支持在事務commit前等待ACK兩項內容,需要的朋友可以參考下2015-05-05