mysql中json_replace函數的使用?通過json_replace對json對象的值進行替換


需求描述:

  在看mysql中關於json的內容,通過json_replace函數可以實現對json值的替換,

  在此記錄下.

操作過程:

1.查看帶有json數據類型的表

mysql> select * from tab_json;
+----+---------------------------------------------------------------------------------------+
| id | data                                                                                  |
+----+---------------------------------------------------------------------------------------+
|  1 | {"age": "33", "tel": 13249872314, "passcode": "654567"}                               |
|  2 | {"age": "33", "tel": 189776542, "name": "David", "olds": "12", "address": "Hangzhou"} |
+----+---------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

2.使用json_replace函數對json值進行操作

mysql> select json_replace(data,'$.age',54,'$.tel',15046464563) from tab_json  where id = 1; #使用json_replace進行查詢處理,對已經存在的key值進行替換
+-------------------------------------------------------+
| json_replace(data,'$.age',54,'$.tel',15046464563)     |
+-------------------------------------------------------+
| {"age": 54, "tel": 15046464563, "passcode": "654567"} |
+-------------------------------------------------------+
1 row in set (0.00 sec)

mysql> select json_replace(data,'$.age',54,'$.tel',15046464563,'$.sex',"male") from tab_json  where id = 1; #對於不存在key,是沒有增加新的key-value值的
+------------------------------------------------------------------+
| json_replace(data,'$.age',54,'$.tel',15046464563,'$.sex',"male") |
+------------------------------------------------------------------+
| {"age": 54, "tel": 15046464563, "passcode": "654567"}            |
+------------------------------------------------------------------+
1 row in set (0.00 sec)

3.通過update語句對json中的值進行替換操作

mysql> update tab_json set data = json_replace(data,'$.age',54,'$.tel',15046464563) where id = 1; #對id=1的行進行更新操作,更新之后,age和tel的值發生了變化
Query OK, 1 row affected (0.10 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from tab_json;
+----+---------------------------------------------------------------------------------------+
| id | data                                                                                  |
+----+---------------------------------------------------------------------------------------+
|  1 | {"age": 54, "tel": 15046464563, "passcode": "654567"}                                 |
|  2 | {"age": "33", "tel": 189776542, "name": "David", "olds": "12", "address": "Hangzhou"} |
+----+---------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

mysql> update tab_json set data = json_replace(data,'$.age',54,'$.tel',15046464563,'$.sex',"male") where id = 1; 對id=1的行進行更新操作,更新之后,age和tel的值發生了變化,但是並沒有增加新的key
Query OK, 0 rows affected (0.00 sec)
Rows matched: 1  Changed: 0  Warnings: 0

mysql> select * from tab_json;
+----+---------------------------------------------------------------------------------------+
| id | data                                                                                  |
+----+---------------------------------------------------------------------------------------+
|  1 | {"age": 54, "tel": 15046464563, "passcode": "654567"}                                 |
|  2 | {"age": "33", "tel": 189776542, "name": "David", "olds": "12", "address": "Hangzhou"} |
+----+---------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

 備注:所以json_replace的主要作用是替換,如果存在key就替換對應的值,如果不存在key也不會增加,與json_insert的使用有區別.

 

json_insert函數的使用:https://www.cnblogs.com/chuanzhang053/p/9142212.html

 

文檔創建時間:2018年6月6日09:48:10


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM