<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
很多日常業務場景都會用到json檔案作為資料儲存起來,而mysql5.7以上就提供了儲存json的支撐。往常儲存json一般都保留在pg庫或者是hive庫裡面,現在mysql有了支援的話基本業務都可以用mysql來實現。現在mysql8.x版本對json字元出處理已經做的非常完善了。現在就讓我們來詳細瞭解一下關於json資料資料型別mysql都有哪些函數能夠對其進行操作。
該系列文章將按照這個脈絡行文,此係列文章將被納入我的專欄一文速學SQL各類資料庫操作,基本覆蓋到使用SQL處理日常業務以及常規的查詢建庫分析以及複雜操作方方面面的問題。從基礎的建庫建表逐步入門到處理各類資料庫複雜操作,以及專業的SQL常用函數講解都花費了大量時間和心思創作,如果大家有需要從事資料分析或者資料開發的朋友推薦訂閱專欄,將在第一時間學習到最實用常用的知識。此篇部落格篇幅較長,值得細讀實踐一番,我會將精華部分挑出細講實踐。博主會長期維護博文,有錯誤或者疑惑可以在評論區指出,感謝大家的支援。
首先我們還是先複習一遍json資料型別的語法規則,這在我的很多文章都有寫到:
JSON是一個標記符的序列。這套標記符包含六個構造字元、字串、數位和三個字面名。
JSON是一個序列化的物件或陣列。
值可以是物件、陣列、數位、字串或者三個字面值(false、null、true)中的一個。值中的字面值中的英文必須使用小寫。
如:
"code":"100"
物件由花括號括起來的逗號分割的成員構成,成員是字串鍵和上文所述的值由逗號分割的鍵值對組成: {“code”:20,"type":"mysql"}
陣列是由方括號括起來的一組值構成:
"datesource":[
{"code":"20", "type":"mysql"},
{"code":"20", "type":"mysql"},
{"code":"20", "type":"mysql"}
]
複習完畢之後我們再來對mysql處理json函數實驗。
首先我們建立一個表來進行操作:
create TABLE json_test( id int not null primary key auto_increment, content json );
接下來,向test_json資料表中插入資料。
insert into json_test(content) values('{"name":"fanstuck","age":23,"address":{"province":"zhejiang","city":"hangzhou"}}')
可以使用“->”和“->>”查詢JSON資料中指定的內容。
SELECT content->'$.name' FROM json_test where id =1;
JSON_CONTAINS(json_doc,value)函數查詢JSON型別的欄位中是否包含value資料。如果包含則返回1,否則返回0。其中,json_doc為JSON型別的資料,value為要查詢的資料。
SELECT JSON_CONTAINS(content, '{"name":"fanstuck"}') FROM json_test ;
SELECT JSON_SEARCH(content ->> '$.address', 'all', 'nanchang') FROM json_test ;
JSON_PRETTY(json_doc)函數以標準的格式顯示JSON資料。
SELECT JSON_PRETTY(content) FROM json_test ;
JSON_DEPTH(json_doc)函數返回JSON資料的最大深度。
SELECT JSON_DEPTH(content) FROM json_test;
JSON_LENGTH(json_doc[,path])函數返回JSON資料的長度。
SELECT JSON_LENGTH(content) FROM json_test;
JSON_KEYS(json_doc[,path])函數返回JSON資料中頂層key組成的JSON陣列。
SELECT JSON_KEYS(content) FROM json_test;
JSON_INSERT(json_doc,path,val[,path,val] ...)函數用於向JSON資料中插入資料。
{"age": 23, "name": "fanstuck", "address": {"ip": "192.168.12.12", "city": "hangzhou", "province": "zhejiang"}}
可以看到,JSON_INSERT()函數並沒有更新資料表中的資料,只是修改了顯示結果。
JSON_REMOVE(json_doc,path[,path] ...)函數用於移除JSON資料中指定key的資料。
SELECT JSON_REMOVE(content, '$.address.city') FROM json_test WHERE id = 2;
JSON_REPLACE(json_doc,path,val[,path,val] ...)函數用於更新JSON資料中指定Key的資料。
SELECT JSON_REPLACE(content,'$.age',20) FROM json_test ;
可以看到,JSON_REPLACE()函數並沒有更新資料表中的資料,只是修改了顯示結果。
JSON_SET(json_doc,path,val[,path,val] ...)函數用於向JSON資料中插入資料。
SELECT JSON_SET(content, '$.address.street', 'xxx街道') FROM json_test WHERE id = 1;
JSON_TYPE(json_val)函數用於返回JSON資料的JSON型別,MySQL中支援的JSON型別除了可以是MySQL中的資料型別外,還可以是OBJECT和ARRAY型別,其中OBJECT表示JSON物件,ARRAY表示JSON陣列。
SELECT JSON_TYPE(content) FROM json_test ;
JSON_VALID(value)函數用於判斷value的值是否是有效的JSON資料,如果是,則返回1,否則返回0,如果value的值為NULL,則返回NULL。
SELECT JSON_VALID('{"name":"binghe"}'), JSON_VALID('name'), JSON_VALID(NULL);
到此這篇關於MySQL資料庫基礎學習之JSON函數各類操作詳解的文章就介紹到這了,更多相關MySQL JSON函數內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45