MySql之json_extract函數(shù)處理json字段

MySql之json_extract函數(shù)處理json字段

在db中存儲json格式的數(shù)據(jù)喂分,相信大家都或多或少的使用過瞎疼,那么在查詢這個json結(jié)構(gòu)中的數(shù)據(jù)時,有什么好的方法么串纺?取出String之后再代碼中進行解析开皿?

接下來本文將介紹一下Mysql5.7+之后提供的json_extract函數(shù),可以通過key查詢value值

1. 使用方式

數(shù)據(jù)存儲的數(shù)據(jù)是json字符串波丰,類型為我們常用的varchar即可

語法:

JSON_EXTRACT(json_doc, path[, path] …)

若json字符串非數(shù)組時,可以通過$.字段名來表示查詢對應(yīng)的value

2.使用演示

創(chuàng)建一個測試的表

CREATE TABLE `json_table` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主鍵id',
  `val` json DEFAULT NULL COMMENT 'json字符串',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

插入幾條數(shù)據(jù)

insert into `json_table` values (1, '{"name": "一灰灰blog", "age": 18}');
insert into `json_table` values (2, '{"name": "一灰灰blog", "site": "https://blog.hhui.top"}');

查詢json串中的name舶得,如下

mysql> select json_extract(`val`, '$.name') from `json_table`;
+-------------------------------+
| json_extract(`val`, '$.name') |
+-------------------------------+
| "一灰灰blog"                  |
| "一灰灰blog"                  |
+-------------------------------+

如果查詢的key不在json串中掰烟,返回的是null,而不是拋異常

mysql> select json_extract(`val`, '$.name') as `name`, json_extract(`val`, '$.site') as `site` from `json_table`;
+-----------------+-------------------------+
| name            | site                    |
+-----------------+-------------------------+
| "一灰灰blog"    | NULL                    |
| "一灰灰blog"    | "https://blog.hhui.top" |
+-----------------+-------------------------+

接下來再看一下如果為json數(shù)組,怎么整

mysql> insert into `json_table` values (3, '[{"name": "一灰灰", "site": "https://spring.hhui.top"}]');


mysql> select json_extract(`val`, '$[0].name') from `json_table` where id = 3;
+----------------------------------+
| json_extract(`val`, '$[0].name') |
+----------------------------------+
| "一灰灰"                         |
+----------------------------------+

除了在查詢結(jié)果中使用json_extract之外纫骑,也可以在查詢條件中使用它

mysql> select * from `json_table` where json_extract(`val`, '$.name') = '一灰灰blog';
+----+------------------------------------------------------------+
| id | val                                                        |
+----+------------------------------------------------------------+
|  1 | {"age": 18, "name": "一灰灰blog"}                          |
|  2 | {"name": "一灰灰blog", "site": "https://blog.hhui.top"}    |
+----+------------------------------------------------------------+

3. 小結(jié)

本文主要介紹json_extract函數(shù)的使用姿勢蝎亚,用于解析字段內(nèi)value為json串的場景

基本使用姿勢

  • json對象:json_extract('db字段', '$.json串key')
  • json數(shù)組:json_extract('db字段', '$[數(shù)組下標(biāo)].json串key')

一灰灰的聯(lián)系方式

盡信書則不如無書,以上內(nèi)容先馆,純屬一家之言发框,因個人能力有限,難免有疏漏和錯誤之處煤墙,如發(fā)現(xiàn)bug或者有更好的建議梅惯,歡迎批評指正,不吝感激

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末番捂,一起剝皮案震驚了整個濱河市个唧,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌设预,老刑警劉巖徙歼,帶你破解...
    沈念sama閱讀 219,539評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異鳖枕,居然都是意外死亡魄梯,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評論 3 396
  • 文/潘曉璐 我一進店門宾符,熙熙樓的掌柜王于貴愁眉苦臉地迎上來酿秸,“玉大人,你說我怎么就攤上這事魏烫±彼眨” “怎么了?”我有些...
    開封第一講書人閱讀 165,871評論 0 356
  • 文/不壞的土叔 我叫張陵哄褒,是天一觀的道長稀蟋。 經(jīng)常有香客問我,道長呐赡,這世上最難降的妖魔是什么退客? 我笑而不...
    開封第一講書人閱讀 58,963評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮链嘀,結(jié)果婚禮上萌狂,老公的妹妹穿的比我還像新娘。我一直安慰自己怀泊,他們只是感情好茫藏,可當(dāng)我...
    茶點故事閱讀 67,984評論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著霹琼,像睡著了一般刷允。 火紅的嫁衣襯著肌膚如雪冤留。 梳的紋絲不亂的頭發(fā)上碧囊,一...
    開封第一講書人閱讀 51,763評論 1 307
  • 那天树灶,我揣著相機與錄音,去河邊找鬼糯而。 笑死天通,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的熄驼。 我是一名探鬼主播像寒,決...
    沈念sama閱讀 40,468評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼瓜贾!你這毒婦竟也來了诺祸?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤祭芦,失蹤者是張志新(化名)和其女友劉穎筷笨,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體龟劲,經(jīng)...
    沈念sama閱讀 45,850評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡胃夏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,002評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了昌跌。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片仰禀。...
    茶點故事閱讀 40,144評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蚕愤,靈堂內(nèi)的尸體忽然破棺而出答恶,到底是詐尸還是另有隱情,我是刑警寧澤萍诱,帶...
    沈念sama閱讀 35,823評論 5 346
  • 正文 年R本政府宣布悬嗓,位于F島的核電站,受9級特大地震影響砂沛,放射性物質(zhì)發(fā)生泄漏烫扼。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,483評論 3 331
  • 文/蒙蒙 一碍庵、第九天 我趴在偏房一處隱蔽的房頂上張望映企。 院中可真熱鬧,春花似錦静浴、人聲如沸堰氓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽双絮。三九已至浴麻,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間囤攀,已是汗流浹背软免。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留焚挠,地道東北人膏萧。 一個月前我還...
    沈念sama閱讀 48,415評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像蝌衔,于是被迫代替她去往敵國和親榛泛。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,092評論 2 355

推薦閱讀更多精彩內(nèi)容