国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術(shù)文章
文章詳情頁

MySQL數(shù)據(jù)庫基礎(chǔ)學(xué)習(xí)之JSON函數(shù)各類操作詳解

瀏覽:4日期:2023-02-18 16:43:55
目錄
  • 前言
  • 一、JSON語法規(guī)則
  • 二、JSON函數(shù)
    • 1.JSON_CONTAINS(json_doc,value)函數(shù)
    • 2.JSON_SEARCH()函數(shù)
    • 3.JSON_PRETTY(json_doc)函數(shù)
    • 4.JSON_DEPTH(json_doc)函數(shù)
    • 5.JSON_LENGTH(json_doc[,path])函數(shù)
    • 6.JSON_KEYS(json_doc[,path])函數(shù)
    • 7. JSON_INSERT(json_doc,path,val[,path,val] ...)函數(shù)
    • 8.JSON_REMOVE(json_doc,path[,path] ...)函數(shù)
    • 9.JSON_REPLACE(json_doc,path,val[,path,val] ...)函數(shù)
    • 10.JSON_SET(json_doc,path,val[,path,val] ...)函數(shù)
    • 11.JSON_TYPE(json_val)函數(shù)
    • 12. JSON_VALID(value)函數(shù)

前言

很多日常業(yè)務(wù)場景都會用到j(luò)son文件作為數(shù)據(jù)存儲起來,而mysql5.7以上就提供了存儲json的支撐。往常存儲json一般都保留在pg庫或者是hive庫里面,現(xiàn)在mysql有了支持的話基本業(yè)務(wù)都可以用mysql來實(shí)現(xiàn)。現(xiàn)在mysql8.x版本對json字符出處理已經(jīng)做的非常完善了。現(xiàn)在就讓我們來詳細(xì)了解一下關(guān)于json數(shù)據(jù)數(shù)據(jù)類型mysql都有哪些函數(shù)能夠?qū)ζ溥M(jìn)行操作。

該系列文章將按照這個脈絡(luò)行文,此系列文章將被納入我的專欄一文速學(xué)SQL各類數(shù)據(jù)庫操作,基本覆蓋到使用SQL處理日常業(yè)務(wù)以及常規(guī)的查詢建庫分析以及復(fù)雜操作方方面面的問題。從基礎(chǔ)的建庫建表逐步入門到處理各類數(shù)據(jù)庫復(fù)雜操作,以及專業(yè)的SQL常用函數(shù)講解都花費(fèi)了大量時間和心思創(chuàng)作,如果大家有需要從事數(shù)據(jù)分析或者數(shù)據(jù)開發(fā)的朋友推薦訂閱專欄,將在第一時間學(xué)習(xí)到最實(shí)用常用的知識。此篇博客篇幅較長,值得細(xì)讀實(shí)踐一番,我會將精華部分挑出細(xì)講實(shí)踐。博主會長期維護(hù)博文,有錯誤或者疑惑可以在評論區(qū)指出,感謝大家的支持。

一、JSON語法規(guī)則

首先我們還是先復(fù)習(xí)一遍json數(shù)據(jù)類型的語法規(guī)則,這在我的很多文章都有寫到:

JSON是一個標(biāo)記符的序列。這套標(biāo)記符包含六個構(gòu)造字符字符串數(shù)字和三個字面名

JSON是一個序列化的對象數(shù)組

  • 數(shù)據(jù)為 鍵 / 值 (name/value)對;
  • 數(shù)據(jù)由逗號(,)分隔;
  • 大括號保存對象(object);
  • 方括號保存數(shù)組(Array);

可以是對象數(shù)組數(shù)字字符串或者三個字面值(false、null、true)中的一個。值中的字面值中的英文必須使用小寫。

如:

"code":"100"

對象由花括號括起來的逗號分割的成員構(gòu)成,成員是字符串鍵和上文所述的由逗號分割的鍵值對組成: {“code”:20,"type":"mysql"}

數(shù)組是由方括號括起來的一組值構(gòu)成:

"datesource":[
{"code":"20", "type":"mysql"},
{"code":"20", "type":"mysql"},
{"code":"20", "type":"mysql"}
]

復(fù)習(xí)完畢之后我們再來對mysql處理json函數(shù)實(shí)驗(yàn)。

二、JSON函數(shù)

首先我們創(chuàng)建一個表來進(jìn)行操作:

create TABLE json_test(	id int not null primary key auto_increment,	content json	);

接下來,向test_json數(shù)據(jù)表中插入數(shù)據(jù)。

insert into json_test(content) values("{"name":"fanstuck","age":23,"address":{"province":"zhejiang","city":"hangzhou"}}")

可以使用“->”和“->>”查詢JSON數(shù)據(jù)中指定的內(nèi)容。

SELECT content->"$.name" FROM json_test where id =1;

1.JSON_CONTAINS(json_doc,value)函數(shù)

JSON_CONTAINS(json_doc,value)函數(shù)查詢JSON類型的字段中是否包含value數(shù)據(jù)。如果包含則返回1,否則返回0。其中,json_doc為JSON類型的數(shù)據(jù),value為要查找的數(shù)據(jù)。

SELECT JSON_CONTAINS(content, "{"name":"fanstuck"}") FROM json_test ;    

2.JSON_SEARCH()函數(shù)

SELECT JSON_SEARCH(content ->> "$.address", "all", "nanchang") FROM json_test ;

3.JSON_PRETTY(json_doc)函數(shù)

JSON_PRETTY(json_doc)函數(shù)以標(biāo)準(zhǔn)的格式顯示JSON數(shù)據(jù)。

 SELECT JSON_PRETTY(content) FROM json_test ;

4.JSON_DEPTH(json_doc)函數(shù)

JSON_DEPTH(json_doc)函數(shù)返回JSON數(shù)據(jù)的最大深度。

 SELECT JSON_DEPTH(content) FROM json_test;

5.JSON_LENGTH(json_doc[,path])函數(shù)

JSON_LENGTH(json_doc[,path])函數(shù)返回JSON數(shù)據(jù)的長度。

SELECT JSON_LENGTH(content) FROM json_test;

6.JSON_KEYS(json_doc[,path])函數(shù)

JSON_KEYS(json_doc[,path])函數(shù)返回JSON數(shù)據(jù)中頂層key組成的JSON數(shù)組。

 SELECT JSON_KEYS(content) FROM json_test;

7. JSON_INSERT(json_doc,path,val[,path,val] ...)函數(shù)

JSON_INSERT(json_doc,path,val[,path,val] ...)函數(shù)用于向JSON數(shù)據(jù)中插入數(shù)據(jù)。

{"age": 23, "name": "fanstuck", "address": {"ip": "192.168.12.12", "city": "hangzhou", "province": "zhejiang"}}

可以看到,JSON_INSERT()函數(shù)并沒有更新數(shù)據(jù)表中的數(shù)據(jù),只是修改了顯示結(jié)果。

8.JSON_REMOVE(json_doc,path[,path] ...)函數(shù)

JSON_REMOVE(json_doc,path[,path] ...)函數(shù)用于移除JSON數(shù)據(jù)中指定key的數(shù)據(jù)。

 SELECT JSON_REMOVE(content, "$.address.city") FROM json_test WHERE id = 2;

9.JSON_REPLACE(json_doc,path,val[,path,val] ...)函數(shù)

JSON_REPLACE(json_doc,path,val[,path,val] ...)函數(shù)用于更新JSON數(shù)據(jù)中指定Key的數(shù)據(jù)。

SELECT JSON_REPLACE(content,"$.age",20) FROM json_test ;

可以看到,JSON_REPLACE()函數(shù)并沒有更新數(shù)據(jù)表中的數(shù)據(jù),只是修改了顯示結(jié)果。

10.JSON_SET(json_doc,path,val[,path,val] ...)函數(shù)

JSON_SET(json_doc,path,val[,path,val] ...)函數(shù)用于向JSON數(shù)據(jù)中插入數(shù)據(jù)。

 SELECT JSON_SET(content, "$.address.street", "xxx街道") FROM json_test WHERE id = 1;

11.JSON_TYPE(json_val)函數(shù)

JSON_TYPE(json_val)函數(shù)用于返回JSON數(shù)據(jù)的JSON類型,MySQL中支持的JSON類型除了可以是MySQL中的數(shù)據(jù)類型外,還可以是OBJECT和ARRAY類型,其中OBJECT表示JSON對象,ARRAY表示JSON數(shù)組。

 SELECT JSON_TYPE(content) FROM json_test ;

12. JSON_VALID(value)函數(shù)

JSON_VALID(value)函數(shù)用于判斷value的值是否是有效的JSON數(shù)據(jù),如果是,則返回1,否則返回0,如果value的值為NULL,則返回NULL。

 SELECT JSON_VALID("{"name":"binghe"}"), JSON_VALID("name"), JSON_VALID(NULL);

到此這篇關(guān)于MySQL數(shù)據(jù)庫基礎(chǔ)學(xué)習(xí)之JSON函數(shù)各類操作詳解的文章就介紹到這了,更多相關(guān)MySQL JSON函數(shù)內(nèi)容請搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持!

標(biāo)簽: MySQL
主站蜘蛛池模板: 偷拍自拍日韩 | 精品午夜寂寞黄网站在线 | 国产一二三区精品 | 美国美女一级毛片免费全 | 国产成人午夜福在线观看 | 国产精品免费一区二区三区四区 | 国产亚洲精品免费 | 免费人成网站免费看视频 | 纯欧美一级毛片_免费 | 国产 一二三四五六 | 一本高清 | 欧美日本俄罗斯一级毛片 | 日本一区不卡视频 | 久久香蕉国产线看观看式 | 国产精品热久久毛片 | 亚洲国产激情一区二区三区 | 国产精品一区二区国产 | www看片| 色精品一区二区三区 | 日本亚洲成高清一区二区三区 | 亚洲综合一区二区精品久久 | 久久精品国产欧美日韩亚洲 | 亚洲一区二区三区不卡在线播放 | 一级美国片免费看 | 中国成人免费视频 | 日本免费一二区视频 | 亚洲人成网7777777国产 | 老司机深夜影院入口aaaa | 99视频精品在线 | ccav在线永久免费看 | 国产精品v免费视频 | 三级网站在线免费观看 | 日日操干 | 久艹视频在线 | 国产免费一区二区三区在线观看 | 欧美黑人性xxx猛交 欧美很黄视频在线观看 | 国产日本一区二区三区 | 久久久黄色大片 | 成人一级片在线观看 | 一区二区中文字幕亚洲精品 | 亚洲欧美精品成人久久91 |