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

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

MySQL中json字段的操作方法

瀏覽:7日期:2023-10-09 17:47:03

MySQL5.7.8中引入了json字段,這種類型的字段使用的頻率比較低,但是在實際操作中,有些業(yè)務(wù)仍然在用,我們以此為例,介紹下json字段的操作方法:

還是從例子看起:

mysql> create table test1(id int,info json);Query OK, 0 rows affected (0.02 sec)mysql> insert into test1 values (1,’{'name':'yeyz','age':26}’),(2,’{'name':'zhangsan','age':30}’),(3,’{'name':'lisi','age':35}’);Query OK, 3 rows affected (0.02 sec)Records: 3 Duplicates: 0 Warnings: 0mysql> select * from test1;+------+---------------------------------+| id | info |+------+---------------------------------+| 1 | {'age': 26, 'name': 'yeyz'} || 2 | {'age': 30, 'name': 'zhangsan'} || 3 | {'age': 35, 'name': 'lisi'} |+------+---------------------------------+3 rows in set (0.00 sec)

首先我們創(chuàng)建了一個表test1,其中id是int字段,info是json字段,插入了三條數(shù)據(jù),如上:

mysql> select * from test1 where json_extract(info,'$.age')>=30;+------+---------------------------------+| id | info |+------+---------------------------------+| 2 | {'age': 30, 'name': 'zhangsan'} || 3 | {'age': 35, 'name': 'lisi'} |+------+---------------------------------+2 rows in set (0.00 sec)

我們可以通過json_extract的方法得到j(luò)son中的內(nèi)容。其中:

1、$符號代表的是json的根目錄,

2、我們使用$.age相當于取出來了json中的age字段,

3、當然,在函數(shù)最前面,應(yīng)該寫上字段名字info

下面來看json中常用的函數(shù):

a、json_valid判斷是否是json字段,如果是,返回1,如果不是,返回0

mysql> select json_valid(2);+---------------+| json_valid(2) |+---------------+| 0 |+---------------+1 row in set (0.01 sec)mysql> select json_valid(’{'num':2}’);+-------------------------+| json_valid(’{'num':2}’) |+-------------------------+| 1 |+-------------------------+1 row in set (0.00 sec)mysql> select json_valid(’2’);+-----------------+| json_valid(’2’) |+-----------------+|1 |+-----------------+1 row in set (0.00 sec)mysql> select json_valid(’name’);+--------------------+| json_valid(’name’) |+--------------------+| 0 |+--------------------+1 row in set (0.00 sec)

這里需要注意的是,如果傳入了字符串2,那么,返回結(jié)果是1

b、json_keys傳回執(zhí)行json字段最上一層的key值

mysql> select json_keys(’{'name':'yeyz','score':100}’);+------------------------------------------+| json_keys(’{'name':'yeyz','score':100}’) |+------------------------------------------+| ['name', 'score'] |+------------------------------------------+1 row in set (0.01 sec)mysql> select json_keys(’{'name':'yeyz','score':{'math':100,'English':95}}’);+----------------------------------------------------------------+| json_keys(’{'name':'yeyz','score':{'math':100,'English':95}}’) |+----------------------------------------------------------------+| ['name', 'score'] |+----------------------------------------------------------------+1 row in set (0.00 sec)#如果有多層,可以在最后面使用$的方法,拿到其中的某一層的目錄mysql> select json_keys(’{'name':'yeyz','score':{'math':100,'English':95}}’,’$.score’);+--------------------------------------------------------------------------+| json_keys(’{'name':'yeyz','score':{'math':100,'English':95}}’,’$.score’) |+--------------------------------------------------------------------------+| ['math', 'English'] |+--------------------------------------------------------------------------+1 row in set (0.00 sec)

c、json_length函數(shù),返回最上一層的key個數(shù),如果想取到中間的某一層,則可以使用$的方法,如下:

mysql> select json_length(’{'name':'yeyz','score':{'math':100,'English':95},'age':26}’);+---------------------------------------------------------------------------+| json_length(’{'name':'yeyz','score':{'math':100,'English':95},'age':26}’) |+---------------------------------------------------------------------------+| 3 |+---------------------------------------------------------------------------+1 row in set (0.00 sec)mysql> select json_length(’{'name':'yeyz','score':{'math':100,'English':95},'age':26}’,’$.score’);+-------------------------------------------------------------------------------------+| json_length(’{'name':'yeyz','score':{'math':100,'English':95},'age':26}’,’$.score’) |+-------------------------------------------------------------------------------------+| 2 |+-------------------------------------------------------------------------------------+1 row in set (0.00 sec)

d、json_depth函數(shù),json文件的深度,測試例子如下:

mysql> select json_depth(’{'aaa':1}’),json_depth(’{}’);+-------------------------+------------------+| json_depth(’{'aaa':1}’) | json_depth(’{}’) |+-------------------------+------------------+| 2 |1 |+-------------------------+------------------+1 row in set (0.00 sec)mysql> select json_depth(’{'name':'yeyz','score':{'math':100,'English':95},'age':26}’);+--------------------------------------------------------------------------+| json_depth(’{'name':'yeyz','score':{'math':100,'English':95},'age':26}’) |+--------------------------------------------------------------------------+| 3 |+--------------------------------------------------------------------------+1 row in set (0.00 sec)

這里需要注意的是,形如{’aa’:1}這種形式的json,其深度是2

e、json_contains_path函數(shù)檢索json中是否有一個或者多個成員。

mysql> set @j=’{'a':1,'b':2,'c':{'d':4}}’;Query OK, 0 rows affected (0.00 sec)#one的意思是只要包含一個成員,就返回1mysql> select json_contains_path(@j,’one’,’$.a’,’$.e’);+------------------------------------------+| json_contains_path(@j,’one’,’$.a’,’$.e’) |+------------------------------------------+| 1 |+------------------------------------------+1 row in set (0.00 sec)#all的意思是所有的成員都包含,才返回1mysql> select json_contains_path(@j,’all’,’$.a’,’$.e’);+------------------------------------------+| json_contains_path(@j,’all’,’$.a’,’$.e’) |+------------------------------------------+| 0 |+------------------------------------------+1 row in set (0.01 sec)mysql> select json_contains_path(@j,’one’,’$.c.d’);+--------------------------------------+| json_contains_path(@j,’one’,’$.c.d’) |+--------------------------------------+| 1 |+--------------------------------------+1 row in set (0.00 sec)mysql> select json_contains_path(@j,’one’,’$.a.d’);+--------------------------------------+| json_contains_path(@j,’one’,’$.a.d’) |+--------------------------------------+| 0 |+--------------------------------------+1 row in set (0.00 sec)

f、json_type函數(shù),判斷json中的成員的類型,需要和json_extract結(jié)合起來使用。

mysql> select * from test1;+------+---------------------------------+| id | info |+------+---------------------------------+| 1 | {'age': 26, 'name': 'yeyz'} || 2 | {'age': 30, 'name': 'zhangsan'} || 3 | {'age': 35, 'name': 'lisi'} |+------+---------------------------------+3 rows in set (0.00 sec)#判斷name的類型mysql> select json_type(json_extract(info,'$.name')) from test1;+----------------------------------------+| json_type(json_extract(info,'$.name')) |+----------------------------------------+| STRING || STRING || STRING |+----------------------------------------+3 rows in set (0.00 sec)#判斷age的類型mysql> select json_type(json_extract(info,'$.age')) from test1;+---------------------------------------+| json_type(json_extract(info,'$.age')) |+---------------------------------------+| INTEGER|| INTEGER|| INTEGER|+---------------------------------------+3 rows in set (0.00 sec)#判斷name和age組合起來的類型,可以看到是arraymysql> select json_type(json_extract(info,'$.name','$.age')) from test1;+------------------------------------------------+| json_type(json_extract(info,'$.name','$.age')) |+------------------------------------------------+| ARRAY || ARRAY || ARRAY |+------------------------------------------------+3 rows in set (0.00 sec)

g、*的作用,所有的值,看下面的例子。

{ 'a':1, 'b':2, 'c': { 'd':4 } 'e': { 'd': { 'ddd': '5' } }}mysql> set @j=’{'a':1,'b':2,'c':{'d':4},'e':{'d':{'ddd':'5'}}}’;Query OK, 0 rows affected (0.00 sec)#所有成員mysql> select json_extract(@j,’$.*’);+---------------------------------------+| json_extract(@j,’$.*’)|+---------------------------------------+| [1, 2, {'d': 4}, {'d': {'ddd': '5'}}] |+---------------------------------------+1 row in set (0.00 sec)#所有成員中的d成員mysql> select json_extract(@j,’$.*.d’);+--------------------------+| json_extract(@j,’$.*.d’) |+--------------------------+| [4, {'ddd': '5'}] |+--------------------------+1 row in set (0.00 sec)

以上就是MySQL中json字段的操作方法的詳細內(nèi)容,更多關(guān)于MySQL json字段的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

相關(guān)文章:
主站蜘蛛池模板: 在线精品国产三级 | 狠狠色噜噜狠狠狠米奇9999 | 久草福利在线观看 | 日韩在线一区二区三区免费视频 | 欧美一级片在线播放 | 女女同性一区二区三区四区 | 久久国产精品-国产精品 | 高清大学生毛片一级 | 亚洲人成免费 | 久久久久毛片免费观看 | 一级女毛片 | 中文一级国产特级毛片视频 | 亚洲国产欧美国产综合一区 | 免费观看欧美一级特黄 | 性盈盈影院在线观看 | 亚洲视频播放 | 毛片1级| 欧美日韩一区二区三区视频在线观看 | 台湾三级在线播放 | 成人在线观看不卡 | 久久一本精品 | 久久久久久全国免费观看 | 99精品免费视频 | 日本a级三级三级三级久久 日本a级特黄三级三级三级 | 亚洲精品美女在线观看播放 | 国产高清晰在线播放 | www.亚洲天堂.com | 国产亚洲精品久久久久久久久激情 | 亚洲女人被黑人猛躁进女人 | fc2成年手机免费共享视频 | 在线观看亚洲欧美 | 国产成人久久精品区一区二区 | 日本美女视频韩国视频网站免费 | 久久99中文字幕 | 国产精品爽爽va在线观看无码 | 国产91久久久久久久免费 | 亚洲成人午夜影院 | 欧美aaa级 | 久久久精品视频免费观看 | 成人在线观看一区 | av毛片在线看|