久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

MySQL之JSON類型字段怎么使用

163次閱讀
沒有評論

共計 4292 個字符,預計需要花費 11 分鐘才能閱讀完成。

今天丸趣 TV 小編給大家分享一下 MySQL 之 JSON 類型字段怎么使用的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

測試環境:MySQL8.0.19

準備工作

CREATE TABLE json_demo ( 
 `id` INT ( 11 ) NOT NULL PRIMARY KEY, 
 `content` json NOT NULL 
INSERT INTO json_demo ( id, content )
VALUES
 /* 這條是數組 */
 ( 1,  [{ key : 1,  order : 1,  value :  34252},{key : 2,  order : 2,  value :  23423}]  ),
 /* 這條是數組 */
 ( 2,  [{ key : 4,  order : 4,  value :  234},{key : 5,  order : 5,  value :  234324523}]  ),
 /* 這條是對象 */
 ( 3,  { key : 3,  order : 3,  value :  43242}  ),
 /* 這條是對象 */
 ( 4,  { key : 6,  order : 6,  value :  5423}  );

JSON 對象基礎操作

查詢指定字段值

/*  基礎查詢  */
SELECT
 content -   $.key  AS  key ,
 JSON_EXTRACT(content,  $.key) AS  key2 ,
 content -   $.value  AS  value ,
 JSON_EXTRACT(content,  $.value) AS  value2 ,
 content -   $.value  AS  value3 ,
 JSON_UNQUOTE(JSON_EXTRACT(content,  $.value)) AS  value4 
 json_demo 
WHERE
 id   2;

MySQL 之 JSON 類型字段怎么使用

TIPS:

– 和 - 是 MySQL 設計的語法,其中 - 在 MySQL5.7 支持,- 在 MySQL8.0 中支持。

– 等效于 JSON_EXTRACT(),當查詢字段為字符串時,其返回值還會帶有。

– 等效于 JSON_UNQUOTE(JSON_EXTRACT()),當查詢字段為字符串時,其返回值不會帶有。

用于條件查詢

content – $.key 可以看成一個字段,一個字段能做的操作基本他都能。

SELECT
 content -   $.key  AS  key ,
 content -   $.value  AS  value3 
 json_demo 
WHERE
 id   2
 AND content -   $.key    1
 AND content -   $.value  like  %2%

MySQL 之 JSON 類型字段怎么使用

修改指定字段值

/*  修改  */
UPDATE json_demo 
SET content = JSON_REPLACE(
 content,
 /*  將 content.key 值  + 1 */
 $.key , content -   $.key  + 1,
 /*  將 content.value 值后拼接 abc  */
 $.value , concat(content -   $.value ,  abc)
) WHERE id = 3;
/* JSON_SET 也可以  */
UPDATE json_demo 
SET content = JSON_SET(
 content,
 /*  將 content.key 值  + 1 */
 $.key , content -   $.key  + 1,
 /*  將 content.value 值后拼接 abc  */
 $.value , concat(content -   $.value ,  abc)
) WHERE id = 3;
/*  查詢修改結果  */
SELECT id,content,content -   $.key  AS  key ,content -   $.value  AS  value3 
FROM json_demo WHERE id = 3;
/*  重新賦值  */
UPDATE json_demo SET 
content = JSON_REPLACE(content, $.key ,3, $.value , 43242) WHERE id = 3;

MySQL 之 JSON 類型字段怎么使用

TIPS:

JSON_REPLACE 和 JSON_SET 都可以用來修改某個字段值,區別在于 JSON_REPLACE 替換不存在的屬性時操作無效;而 JSON_SET 則會將這個不存在的屬性插入進去。

所以 JSON_SET 也可以用來追加屬性,與 JSON_INSERT 類似。區別在于 JSON_INSERT 如果插入一個已存在的屬性時操作會失效,而 JSON_SET 會替換。

追加元素

UPDATE json_demo 
SET content = JSON_INSERT(content,  $.key , 234)
WHERE id = 3;
SELECT id,content,content -   $.key  AS  key  FROM json_demo WHERE id = 3;
UPDATE json_demo 
SET content = JSON_INSERT(content,  $.temp , 234)
WHERE id = 3;
SELECT id,content,content -   $.key  AS  key  FROM json_demo WHERE id = 3;
UPDATE json_demo 
SET content = JSON_SET(content,  $.temp2 , 432)
WHERE id = 3;
SELECT id,content,content -   $.key  AS  key  FROM json_demo WHERE id = 3;

MySQL 之 JSON 類型字段怎么使用

JSON 數組操作

查詢指定字段值

SELECT
 content -   $[*].key  AS  key ,
 content -   $[*].value  AS  value ,
 content -   $[0].key  AS  key2 ,
 content -   $[0].value  AS  value2 ,
 /*  查詢數組長度  */
 JSON_LENGTH(content) AS  length 
 json_demo 
WHERE
 id   3;

MySQL 之 JSON 類型字段怎么使用

用于條件查詢

SELECT
 content -   $[*].key  AS  key ,
 content -   $[*].value  AS  value 
 json_demo 
WHERE
 id   3
 /* content.value 的值中存在 like %34% 的值  */
 AND content -   $[*].value  like  %34% 
 /* content.key 的值中有 4  */
 AND JSON_OVERLAPS(content -   $[*].key ,  4  );

MySQL 之 JSON 類型字段怎么使用

修改指定字段值

基礎操作都跟 JSON 對象差不太多,就是在 $ 后面加對應的索引位 $[0],指定所有則 $[*]。如果數組中包含數組,可以通過 $[1][2][3] 這種方式指定深層的數組元素。

MySQL 之 JSON 類型字段怎么使用

追加元素

JSON_ARRAY_APPEND 和 JSON_ARRAY_INSERT 都可以實現數組元素追加。區別在于 JSON_ARRAY_APPEND 可以不指定索引位,此時往最后位置追加;JSON_ARRAY_INSERT 必須指定索引位,不指定則會報錯。

JSON_ARRAY_APPEND 是追加在指定索引位后面,而 JSON_ARRAY_INSERT 則是插入到指定索引位前面。

MySQL 之 JSON 類型字段怎么使用

更多操作名稱描述 JSON_ARRAY() 創建 JSON 數組 JSON_ARRAY_APPEND() 將數據附加到 JSON 文檔 JSON_ARRAY_INSERT() 插入 JSON 數組 JSON_CONTAINS()JSON 文檔是否在路徑中包含特定對象 JSON_CONTAINS_PATH()JSON 文檔是否在路徑中包含任何數據 JSON_DEPTH()JSON 文檔的最大深度 JSON_EXTRACT() 從 JSON 文檔返回數據 JSON_INSERT() 將數據插入 JSON 文檔 JSON_KEYS()JSON 文檔中的鍵數組 JSON_LENGTH()JSON 文檔中的元素數 JSON_MERGE()(已棄用)合并 JSON 文檔,保留重復的鍵。JSON_MERGE_PRESERVE()的已棄用同義詞 JSON_MERGE_PATCH() 合并 JSON 文檔,替換重復鍵的值 JSON_MERGE_PRESERVE() 合并 JSON 文檔,保留重復的鍵 JSON_OBJECT() 創建 JSON 對象 JSON_OVERLAPS()(8.0.17 引入)比較兩個 JSON 文檔,如果它們具有共同的任何鍵值對或數組元素,則返回 TRUE(1),否則返回 FALSE(0)JSON_PRETTY() 以易于閱讀的格式打印 JSON 文檔 JSON_QUOTE() 引用 JSON 文檔 JSON_REMOVE() 從 JSON 文檔中刪除數據 JSON_REPLACE() 替換 JSON 文檔中的值 JSON_SCHEMA_VALID()(8.0.17 引入)根據 JSON 模式驗證 JSON 文檔;如果文檔針對架構進行了驗證,則返回 TRUE / 1;否則,則返回 FALSE / 0。JSON_SCHEMA_VALIDATION_REPORT()(8.0.17 引入)根據 JSON 模式驗證 JSON 文檔;以 JSON 格式返回有關驗證結果的報告,包括成功或失敗以及失敗原因 JSON_SEARCH()JSON 文檔中值的路徑 JSON_SET() 將數據插入 JSON 文檔 JSON_STORAGE_FREE() 部分更新后,JSON 列值的二進制表示形式中的可用空間 JSON_STORAGE_SIZE() 用于存儲 JSON 文檔的二進制表示形式的空間 JSON_TABLE() 從 JSON 表達式返回數據作為關系表 JSON_TYPE()JSON 值類型 JSON_UNQUOTE() 取消引用 JSON 值 JSON_VALID()JSON 值是否有效 JSON_VALUE()(8.0.21 引入)在提供的路徑所指向的位置從 JSON 文檔中提取值;以 VARCHAR(512)或指定的類型返回此值 MEMBER OF()(8.0.17 引入)如果第一個操作數與作為第二個操作數傳遞的 JSON 數組的任何元素匹配,則返回 true(1),否則返回 false(0)

以上就是“MySQL 之 JSON 類型字段怎么使用”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,丸趣 TV 小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注丸趣 TV 行業資訊頻道。

向 AI 問一下細節

丸趣 TV 網 – 提供最優質的資源集合!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2024-02-03發表,共計4292字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 福贡县| 新营市| 永宁县| 弥渡县| 霍城县| 南昌市| 城固县| 桃江县| 临朐县| 灌南县| 阿坝县| 赤峰市| 白水县| 宁都县| 邯郸县| 麻城市| 太保市| 平利县| 辽阳市| 合水县| 乌兰浩特市| 丹凤县| 大足县| 江安县| 乳山市| 东乡族自治县| 广州市| 怀宁县| 黄大仙区| 朝阳市| 治县。| 宁都县| 扎赉特旗| 南阳市| 临湘市| 临猗县| 永康市| 甘德县| 通江县| 秦皇岛市| 北票市|