MySQL 5 7 JSON相關操作

2021-07-24 19:45:04 字數 2834 閱讀 1462

親身試驗過:

官網ip:

create table demo(id int unsigned primary key auto_increment,comment json);

insert into demo(id,name) values(1,', ]}');

-- 檢查第一層的key值 json_keys

-- select json_keys(comment) from demo

-- 從json中提取 json_extract

-- select json_extract(comment,'$.programmers[0].email') from demo 

-- 從json中去除元素 json_remove

-- select json_extract(comment,'$.programmers'),json_remove(comment,'$.programmers[0]') from demo

-- json是否包含當前路徑 json_contains_path

-- select json_contains_path(comment,"all","$.programmers[0].firstname") from demo 

-- 判斷json當前路徑物件型別 json_type

-- select json_type(comment),json_type(comment->"$.programmers[0].firstname"),json_type(comment->"$.programmers")="array" from demo

-- 建立陣列物件 json_array

-- select json_array('a', 1, rand());

-- 將物件列表轉化成json物件(key唯一,必須是偶數 key - value key - value) json_object

-- select json_object('key1', 1, 'key2', 'abc'),json_object('key1', 1, 'key2', 'abc', 'key1', 'def'); 

-- 將兩個或以上的json物件融合 json_merge

-- select json_merge('["a", 1]', ''),json_merge('',''),json_merge('', '');

-- 使用者定義的變數不能json資料型別 函式 collation(返回字串引數的排序方式)

-- set @j = json_object('key', 'value'); select charset(@j), collation(@j);

-- 因為utf8mb4_bin是二進位制排序規則,json值比較是區分大小寫的。

-- select json_array('x') = json_array('x');

-- json對大小寫敏感,sql非空不敏感

-- select json_valid('null'), json_valid('null'), json_valid('null'),isnull(null), isnull(null), isnull(null);

-- 將json中元素替換;如果位置不存在,則追加 json_set

-- set @j = '["a", , [10, 20]]';select json_set(@j, '$[1].b[0]', 1, '$[2][3]', 3);

-- 向json中新增元素,原來位置存在資料不會替換 json_insert

-- select json_insert(@j, '$[1].b[0]', 1, '$[2][2]', 2);

-- 替換json中原有值,不存在的不會替換 json_replace

-- select json_replace(@j, '$[1].b[0]', json_object('key', 'value'), '$[2][2]', 2);

-- 移除json元素列表 json_remove

-- select json_remove(@j, '$[2]', '$[1].b[1]', '$[1].b[1]');

-- 判斷json中是否包含'值',在這個路徑下 json_contains

-- select json_contains('}', '1', '$.a');

-- 去掉json格式""號 json_unquote , ->> 這兩個是等價的

-- select json_unquote(comment->"$.programmers[1].email"), comment->>"$.programmers[1].email"from demo

-- 5.7mysql建立函式索引(類似於觸發器)

-- alter table demo add column index_for_json varchar(128) as (comment->>"$.programmers[1].email") virtual;

-- alter table demo add index index_json (index_for_json);

-- json格式查詢value :json_search(json_doc, one_or_all, search_str[, escape_char[, path] ...]) 第三個引數可以是like表示式 第四個引數 是起始搜尋位置,第5個引數是 終止收索位置

-- set @j = '["abc", [, "def"], , ]';select json_search(@j, 'one', 'abc'),json_search(@j, 'all', 'abc'),json_search(@j, 'all', '%b%', '', '$[1]'),json_search(@j, 'all', '%b%', '', '$[3]');

MySQL5 7 JSON型別使用詳解

json是一種輕量級的資料交換格式,採用了獨立於語言的文字格式,類似xml,但是比xml簡單,易讀並且易編寫。對機器來說易於解析和生成,並且會減少網路頻寬的傳輸。json的格式非常簡單 名稱 鍵值。之前mysql版本裡面要實現這樣的儲存,要麼用varchar要麼用text大文字。mysql5.7發布...

簡單談談MySQL5 7 JSON格式檢索

mysql 5.7.7 labs版本開始innodb儲存引擎已經原生支援json格式,該格式不是簡單的blob類似的替換。下面我們來詳細 下吧 mysql5.7版本開始支援json格式,在建立表時,可以指定列表的資料型別為json,但是如何在json格式上建立索引呢?本人做了乙個簡單測試。第一步 建...

JSON相關操作函式

json用法簡介 json簡介 jsoncpp 主要包含三種型別的 class value reader writer。jsoncpp 中所有物件 類名都在 namespace json 中,包含 json.h 即可。value json value 是jsoncpp 中最基本 最重要的類,用於表示...