MySQL 操作json類型


1.獲取Mysql中的json內容

SELECT 
  SUM(
    a.`extraData` -> "$.commission"
  ) AS commission,
  a.`type`,a.`ID`
FROMtable  a 
WHERE a.`xxx` = 'YES'
GROUP BY a.`type`;

 即調用時為 

SELECT column->"$.field" FROM table

2.更新json

UPDATE 
  tableSET
  jsonData = JSON_SET(jsonData, "$.field1", "123") 
WHERE a = 1AND jsonData IS NOT NULL 

JSON_SET提供同時更新多個的參數

JSON_SET(jsonData, "$.field1", "123","$.field2","xxx","$.field3","3434") 

3.以json為條件

SELECT 
    *
FROM 
    table
WHERE
    jsonData->'$.field' = '123'

4.操作JSON內容

https://dev.mysql.com/doc/refman/5.7/en/json-modification-functions.html#function_json-array-insert

mysql> SET @j = '["a", ["b", "c"], "d"]';
mysql> SELECT JSON_ARRAY_APPEND(@j, '$[1]', 1);
+----------------------------------+
| JSON_ARRAY_APPEND(@j, '$[1]', 1) |
+----------------------------------+
| ["a", ["b", "c", 1], "d"]        |
+----------------------------------+
mysql> SELECT JSON_ARRAY_APPEND(@j, '$[0]', 2);
+----------------------------------+
| JSON_ARRAY_APPEND(@j, '$[0]', 2) |
+----------------------------------+
| [["a", 2], ["b", "c"], "d"]      |
+----------------------------------+
mysql> SELECT JSON_ARRAY_APPEND(@j, '$[1][0]', 3);
+-------------------------------------+
| JSON_ARRAY_APPEND(@j, '$[1][0]', 3) |
+-------------------------------------+
| ["a", [["b", 3], "c"], "d"]         |
+-------------------------------------+

mysql> SET @j = '{"a": 1, "b": [2, 3], "c": 4}';
mysql> SELECT JSON_ARRAY_APPEND(@j, '$.b', 'x');
+------------------------------------+
| JSON_ARRAY_APPEND(@j, '$.b', 'x')  |
+------------------------------------+
| {"a": 1, "b": [2, 3, "x"], "c": 4} |
+------------------------------------+
mysql> SELECT JSON_ARRAY_APPEND(@j, '$.c', 'y');
+--------------------------------------+
| JSON_ARRAY_APPEND(@j, '$.c', 'y')    |
+--------------------------------------+
| {"a": 1, "b": [2, 3], "c": [4, "y"]} |
+--------------------------------------+

mysql> SET @j = '{"a": 1}';
mysql> SELECT JSON_ARRAY_APPEND(@j, '$', 'z');
+---------------------------------+
| JSON_ARRAY_APPEND(@j, '$', 'z') |
+---------------------------------+
| [{"a": 1}, "z"]                 |
+---------------------------------+

 JSON_ARRAY_INSERT 

JSON_INSERT、JSON_REPLACE、JSON_SET分別代表,只增,只替換,增+替換

 


免責聲明!

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



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