mysql5 7 新增的json欄位型別

2021-09-07 20:49:18 字數 3673 閱讀 9692

一、我們先建立乙個表,準備點資料

create table `json_test` (

`id` int(11) unsigned not null auto_increment comment 'id',

`json` json default null comment 'json資料',

二、檢索json列的字段

通過使用 -> 或 ->> 運算子檢索json列的字段

使用 -> 和 ->> 的區別是結果用了引號包裹。

三、處理json的一些函式

json_pretty(json_val) 以優雅的格式顯示json值

select id, json_pretty(json) from json_test\g;
json_contains(target, candidate[, path]) 判斷給定的candidate是否包含在target中,如果指定了path,則在指定路徑中進行查詢。

注意,注意,注意,這裡的candidate如果是數字,需要用單引號包裹,如果是字串,單引號裡再加上雙引號包裹。

select json_contains(json->'$[0].name', '"1號籃子"') from json_test;

select json_contains(json, '"1號籃子"', '$[0].name') from json_test;

json_contains_path(json_doc, one_or_all, path[, path] ...)  判斷json_doc中的路徑是否存在,通俗點說就是json中的key是否存在

select json_contains_path(json, 'one', '$[0].name', '$[0].test') from json_test;
第二個引數'one'表示只要有乙個key存在就返回1,否則為0

select json_contains_path(json, 'all', '$[0].name', '$[0].test') from json_test;
第二個引數'all'表示所有key存在才返回1,否則為0

json_set(json_doc, path, val[, path, val] ...) 插入或更新資料並返回結果

select json_set(json, '$[0].name', '2號籃子', '$[0].test', 'test') from json_test;
我們修改$[0].name的值,並新增乙個key為test,值為test的項

json_insert(json_doc, path, val[, path, val] ...) 插入資料並返回結果,但不替換現有值。

select json_insert(json, '$[0].name', '2號籃子', '$[0].exts', '擴充套件') from json_test;
這時$[0].name不會被更新,只會新增乙個字段$[0].exts

json_replace(json_doc, path, val[, path, val] ...) 替換現有值並返回結果

select json_replace(json, '$[0].name', '替換') from json_test;
將$[0].name中的值替換成新值

json_remove(json_doc, path[, path] ...)  刪除資料並返回結果

select json_remove(json, '$[0].name') from json_test;
刪除$[0].name這項資料

json_keys(json_doc[, path]) 獲取json文件中的所有鍵

select json_keys(json, '$[0]') from json_test;
獲取$[0]路徑下的所有鍵

json_length(json_doc[, path]) 獲取json文件的長度

select json_length(json, '$[0]') from json_test;
獲取$[0]下的元素數量

json_extract(json_doc, path[, path] ...)  返回json文件中的資料

select json_extract(json, '$[0]') from json_test;

select json_extract(json, '$[0].name') from json_test;

返回json文件指定路徑下的資料

json_array([val[, val] ...])  建立json陣列

select json_array(1, '2', true, 5.6, null, now());
json_object([key, val[, key, val] ...]) 通過鍵值對, 建立json物件

select json_object('name', 'xiaoxu', 'age', 28, 'height', 1.72);
注意,這裡鍵和值要成對出現

json_merge_patch(json_doc, json_doc[, json_doc] ...)  合併json文件,如果有重複鍵,後面的資料覆蓋前面的

select json_merge_patch('', '');
json_merge_preserve(json_doc, json_doc[, json_doc] ...)  合併json文件,如果有重複鍵,則會通過陣列把值都儲存起來

select json_merge_preserve('', '');
json_quote(string)  通過用雙引號字元包裹並轉義內部引號和其他字元

select json_quote('你好"世界"');
json_unquote(json_val)  將轉義字元轉換回普通字元

select json_unquote('你好\\t\"世界\"');

MySQL5 7中新增的JSON型別的使用方法

建立表json test create table json test id int 11 auto increment primary key,person desc json engine innodb 插入一條記錄 insert into json test person desc value...

MySQL 5 7的新增功能

1 隨機 root 密碼 mysql 5.7 資料庫初始化完成後,會自動生成乙個 root localhost 使用者,root 使用者的密碼不為空,而是隨機產生乙個密碼。2 自定義 test 資料庫 mysql 5.7 預設安裝完成後沒有 test 資料庫。使用者可以自行建立 test 資料庫並對...

mysql5 7學習 mysql 5 7 學習

mysql uroot proot mysql5.7 mysql.user表沒有password欄位改 authentication string 一.建立使用者 命令 create user username host identified by password 例子 create user d...