亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

mysql數(shù)據(jù)庫(kù)中查詢json的技巧大全

 更新時(shí)間:2025年02月12日 10:01:59   作者:錢多多_qdd  
這篇文章主要介紹了MySQL中JSON數(shù)據(jù)類型的各種函數(shù),包括JSON_EXTRACT、JSON_UNQUOTE、JSON_SEARCH、JSON_SET、JSON_CONTAINS、JSON_REMOVE和JSON_REPLACE等,涵蓋了JSON數(shù)據(jù)的提取、更新、刪除和查詢等功能,需要的朋友可以參考下

前置工作

CREATE TABLE `mk_task_record` (
  `task_id` int NOT NULL AUTO_INCREMENT,
  `task_name` varchar(50) DEFAULT NULL,
  `result_json` json DEFAULT NULL,
  `result_str` longtext,
  `create_time` datetime DEFAULT NULL,
  `update_time` datetime DEFAULT NULL,
  PRIMARY KEY (`task_id`),
  KEY `task_name` (`task_name`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

插入數(shù)據(jù):

插入帶轉(zhuǎn)義符的json:

INSERT INTO `test`.`mk_task_record`(`task_id`, `task_name`, `result_json`, `result_str`, `create_time`, `update_time`) VALUES (1, '哈哈1', '{\"age\": 22, \"name\": \"李四\", \"major\": \"計(jì)算機(jī)科學(xué)\", \"university\": \"清華大學(xué)\", \"is_graduated\": false}', '{\r\n  \"name\": \"李四\",\r\n  \"age\": 22,\r\n  \"major\": \"計(jì)算機(jī)科學(xué)\",\r\n  \"university\": \"清華大學(xué)\",\r\n  \"is_graduated\": false\r\n}', '2025-01-01 00:13:49', '2025-01-01 00:13:52');

INSERT INTO `test`.`mk_task_record`(`task_id`, `task_name`, `result_json`, `result_str`, `create_time`, `update_time`) VALUES (2, '哈哈2', '{\"age\": 22, \"name\": \"張三\", \"major\": \"計(jì)算機(jī)科學(xué)\", \"university\": \"清華大學(xué)\", \"is_graduated\": false}', '{\r\n  \"name\": \"張三\",\r\n  \"age\": 22,\r\n  \"major\": \"計(jì)算機(jī)科學(xué)\",\r\n  \"university\": \"清華大學(xué)\",\r\n  \"is_graduated\": false\r\n}', '2025-01-01 00:13:49', '2025-01-01 00:13:52');

插入不帶轉(zhuǎn)義符的json:

INSERT INTO `test`.`mk_task_record`( `task_name`, `result_json`, `result_str`, `create_time`, `update_time`) VALUES ( '哈哈3', '{"name": "王五", "age": 35, "address": {"street": "123 Main St", "city": "Chicago"}}', '{"name": "王五", "age": 35, "address": {"street": "123 Main St", "city": "Chicago"}}', '2025-01-01 00:13:49', '2025-01-01 00:13:52');
INSERT INTO `test`.`mk_task_record`( `task_name`, `result_json`, `result_str`, `create_time`, `update_time`) VALUES ( '哈哈4', '{"name": "趙六", "age": 30, "address": {"street": "123 Main St", "city": "Chicago"}}','{"name": "趙六", "age": 30, "address": {"street": "123 Main St", "city": "Chicago"}}', '2025-01-01 00:13:49', '2025-01-01 00:13:52');
  • result_json是json格式;
  • result_result是longtext格式;

經(jīng)過(guò)實(shí)際測(cè)試,json、varchar、text類型的json格式都可以使用以下的函數(shù),且效果相同。

一、JSON_EXTRACT 提取指定數(shù)據(jù)

1.1 提取簡(jiǎn)單值

SELECT JSON_EXTRACT(result_str,'$.name') from mk_task_record;
SELECT JSON_EXTRACT(result_json,'$.name') from mk_task_record;
  • json類型:

  • text類型

    結(jié)果也帶引號(hào);

如何去掉引號(hào)呢?

——查看【四、JSON_UNQUOTE 取消雙引號(hào)】

  • 作條件查詢
select *from mk_task_record where json_extract(result_str,'$.name') ='張三';
select *from mk_task_record where json_extract(result_json,'$.name') ='張三';

兩條sql返回的都一樣:

http://chabaoo.cn/database/3356367c4.htm

二、字段->'$.json屬性’進(jìn)行查詢條件,以及數(shù)據(jù)反顯

select result_json->'$.name' from mk_task_record;

作為查詢條件,不用轉(zhuǎn)移雙引號(hào)。

三、JSON_UNQUOTE 取消雙引號(hào)

JSON_UNQUOTE() 函數(shù)取消雙引號(hào)引用 JSON 值,并將結(jié)果作為字符串返回。

3.1 語(yǔ)法:

JSON_UNQUOTE(json_val)

參數(shù)說(shuō)明:

json_val:必需的。一個(gè)字符串。

返回值:

取消雙引號(hào)引用 JSON 值

返回NULL情況:參數(shù)為 NULL。

報(bào)錯(cuò)情況:不是有效的 JSON 字符串文本。能夠識(shí)別下表中的轉(zhuǎn)義字符:

  • ":雙引號(hào) "
  • \b:退格字符
  • \f:換頁(yè)符
  • \n:換行符
  • \r:回車符
  • \t:制表符
  • \:反斜杠
  • \uXXXX:Unicode 值 XXXX 的 UTF-8 字節(jié)

3.2 示例:

SELECT JSON_UNQUOTE(JSON_EXTRACT(result_json,'$.name')) from mk_task_record;

五、JSON_SEARCH 查找

JSON_SEARCH() 函數(shù)返回一個(gè)給定字符串在一個(gè) JSON 文檔中的路徑。

5.1 語(yǔ)法:

JSON_SEARCH(json, one_or_all, search_str)
JSON_SEARCH(json, one_or_all, search_str, escape_char)
JSON_SEARCH(json, one_or_all, search_str, escape_char, path)

參數(shù)說(shuō)明:

  • on:必需的。一個(gè) JSON 文檔。
  • one_or_all:必需的??捎弥担?lsquo;one’, ‘all’。
  • 規(guī)則如下:‘one’:返回第一個(gè)匹配的路徑。‘all’:返回所有匹配的路徑。所有的路徑會(huì)包裝在一個(gè)數(shù)組內(nèi)返回。
  • search_str:必需的。被搜索的字符串。 您可以在 search_str 參數(shù)中使用 % 和 _ 通配符,就像 LIKE 一樣:% 匹配任意數(shù)量的任意字符。_ 匹配一個(gè)任意字符。
  • escape_char:可選的。 如果 search_str 中包含 % 和 _,需要在他們之前添加轉(zhuǎn)移字符。默認(rèn)是 \。
  • path:可選的。只能在此路徑下進(jìn)行搜索。

返回值:一個(gè)路徑字符串或者由多個(gè)路徑組成的數(shù)組。返回 NULL情況:未搜索到指定的字符串。JSON 文檔中不存在指定的 path。任意一個(gè)參數(shù)為 NULL。

報(bào)錯(cuò)情況:json 不是有效的 JSON 文檔。path 不是有效的路徑表達(dá)式。

5.2 示例:

select *from mk_task_record where  JSON_SEARCH(result_json,'one','張三');

六、JSON_SET 插入或更新數(shù)據(jù)

JSON_SET() 函數(shù)在一個(gè) JSON 文檔中插入或更新數(shù)據(jù)并返回新的 JSON 文檔。它相當(dāng)于是 JSON_INSERT() 和 JSON_REPLACE() 的組合。

6.1 語(yǔ)法:

JSON_SET(json, path, value[, path2, value2] ...)

參數(shù)說(shuō)明:

  • json:必需的。被修改的 JSON 文檔。
  • path:必需的。一個(gè)有效的路徑表達(dá)式,它不能包含 * 或 **。
  • value:必需的。要設(shè)置的數(shù)據(jù)。

插入或更新數(shù)據(jù)并返回新的 JSON 文檔。規(guī)則如下:

  • 存在路徑:更新。
  • 不存在路徑:添加。
  • 若value 為字符串:直接插入。
  • 返回 NULL情況:JSON 文檔或者路徑為 NULL。

報(bào)錯(cuò)情況:json 不是有效的 JSON 文檔。

path 不是有效的路徑表達(dá)式或者其中包含 * 或 **。

6.2 示例:

UPDATE mk_task_record SET result_str = JSON_SET(result_str, '$.name', '王麻子', '$.age', '36')  where task_id =1;

七、JSON_CONTAINS 判斷是否包含

JSON_CONTAINS() 函數(shù)檢查一個(gè) JSON 文檔中是否包含另一個(gè) JSON 文檔。

7.1 語(yǔ)法:

JSON_CONTAINS(target_json, candidate_json)
JSON_CONTAINS(target_json, candidate_json, path)

參數(shù)說(shuō)明:

  • target_json必需的。一個(gè) JSON 文檔。
  • candidate_json:必需的。被包含的 JSON 文檔。
  • path:可選的。一個(gè)路徑表達(dá)式。
  • 返回值:

包含:返回1。
不包含:返回0。
返回 NULL情況:JSON 文檔中不存在指定的路徑。
任意一個(gè)參數(shù)為 NULL。

報(bào)錯(cuò)情況:
json 不是有效的 JSON 文檔。path 不是有效的路徑表達(dá)式。

示例:

SELECT * FROM mk_task_record WHERE JSON_CONTAINS(result_json, '"張三"','$.name');

注意:"張三"有雙引號(hào)一定加,否則報(bào)錯(cuò):

八、JSON_REMOVE 刪除指定數(shù)據(jù)

JSON_REMOVE() 函數(shù)從一個(gè) JSON 文檔中刪除由路徑指定的數(shù)據(jù)并返回修改后的 JSON 文檔。

8.1 語(yǔ)法:

JSON_REMOVE(json, path[, path] ...)

參數(shù)說(shuō)明:

  • json:必需的。一個(gè) JSON 文檔。
  • path:必需的。一個(gè)有效的路徑表達(dá)式,它不能包含 * 或 **。

返回值:刪除后的JSON文檔。

8.2 示例:

select JSON_REMOVE(result_str,'$.major') from mk_task_record where task_id =1;

九、JSON_REPLACE 替換數(shù)據(jù)

JSON_REPLACE() 函數(shù)在一個(gè) JSON 文檔中替換已存在的數(shù)據(jù)并返回新的 JSON 文檔

9.1 語(yǔ)法:

JSON_REPLACE(json, path, value[, path2, value2] ...)

參數(shù)說(shuō)明:

  • json:必需的。被修改的 JSON 文檔。
  • path:必需的。一個(gè)有效的路徑表達(dá)式,它不能包含 * 或 **。
  • value:必需的。新的數(shù)據(jù)。
  • 返回值:替換后的JSON文檔?;?NULL情況:JSON 文檔或者路徑為 NULL。

報(bào)錯(cuò)情況:
json 不是有效的 JSON 文檔。path 不是有效的路徑表達(dá)式或者其中包含 * 或 **。

9.2 示例:

select JSON_REPLACE(result_str,'$.university','復(fù)旦大學(xué)') from mk_task_record where task_id =1;

拓展:

http://chabaoo.cn/database/3356414s9.htm

總結(jié)

到此這篇關(guān)于mysql數(shù)據(jù)庫(kù)中查詢json技巧大全的文章就介紹到這了,更多相關(guān)mysql查詢json技巧內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

  • MySQL表添加某一列和刪除某一列的方法

    MySQL表添加某一列和刪除某一列的方法

    MySQL是一種廣泛使用的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),它是一種開源的軟件,由瑞典的MySQL?AB公司開發(fā)的,這篇文章主要介紹了關(guān)于MySQL表添加某一列和刪除某一列的sql語(yǔ)句,需要的朋友可以參考下
    2023-06-06
  • mysql-5.5.28源碼安裝過(guò)程中錯(cuò)誤總結(jié)

    mysql-5.5.28源碼安裝過(guò)程中錯(cuò)誤總結(jié)

    介紹一下關(guān)于mysql-5.5.28源碼安裝過(guò)程中幾大錯(cuò)誤總結(jié),希望此文章對(duì)各位同學(xué)有所幫助。
    2013-10-10
  • 你知道哪幾種MYSQL的連接查詢

    你知道哪幾種MYSQL的連接查詢

    連接(join)查詢是將兩個(gè)查詢的結(jié)果以“橫向?qū)印钡姆绞胶喜⑵饋?lái)的結(jié)果,這篇文章主要給大家介紹了關(guān)于MYSQL連接查詢的相關(guān)資料,需要的朋友可以參考下
    2021-06-06
  • Xampp中mysql無(wú)法啟動(dòng)問(wèn)題的解決方法

    Xampp中mysql無(wú)法啟動(dòng)問(wèn)題的解決方法

    最近有朋友反映遇到了xampp的mysql啟動(dòng)不了這種情況,該怎么辦呢,所以下面這篇文章主要給大家介紹了關(guān)于Xampp中mysql無(wú)法啟動(dòng)問(wèn)題的解決方法,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • IDEA找不到Database的完美解決方法

    IDEA找不到Database的完美解決方法

    IntelliJ IDEA中可以用database來(lái)連接數(shù)據(jù)庫(kù),但也會(huì)經(jīng)常遇到問(wèn)題,下面這篇文章主要給大家介紹了關(guān)于IDEA找不到Database的完美解決方法,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • 安裝MySQL后,需要調(diào)整的10個(gè)性能配置項(xiàng)

    安裝MySQL后,需要調(diào)整的10個(gè)性能配置項(xiàng)

    這篇文章主要介紹了安裝MySQL后,需要調(diào)整的10個(gè)性能配置項(xiàng),幫助大家更好的理解和使用MySQL數(shù)據(jù)庫(kù),感興趣的朋友可以了解下
    2020-12-12
  • MySQL?FLOAT不準(zhǔn)問(wèn)題解析

    MySQL?FLOAT不準(zhǔn)問(wèn)題解析

    在數(shù)據(jù)庫(kù)處理中,使用FLOAT類型存儲(chǔ)浮點(diǎn)數(shù)時(shí),由于二進(jìn)制表示的限制,會(huì)導(dǎo)致精度損失,解決方法包括使用DOUBLE或DECIMAL類型來(lái)提高精度,或避免使用浮點(diǎn)數(shù)進(jìn)行精確計(jì)算,感興趣的可以了解一下
    2024-09-09
  • 淺析MySQL 備份與恢復(fù)

    淺析MySQL 備份與恢復(fù)

    這篇文章主要介紹了MySQL 備份與恢復(fù)的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)MySQL,感興趣的朋友可以了解下
    2020-08-08
  • mysql 5.7.20\5.7.21 免安裝版安裝配置教程

    mysql 5.7.20\5.7.21 免安裝版安裝配置教程

    這篇文章主要為大家詳細(xì)介紹了mysql5.7.20和mysql5.7.21免安裝版安裝配置教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • 最新評(píng)論