標籤:
官方文檔:JSON Functions
| Name |
Description |
JSON_APPEND() |
Append data to JSON document |
JSON_ARRAY() |
Create JSON array |
JSON_ARRAY_APPEND() |
Append data to JSON document |
JSON_ARRAY_INSERT() |
Insert into JSON array |
-> |
Return value from JSON column after evaluating path; equivalent to JSON_EXTRACT(). |
JSON_CONTAINS() |
Whether JSON document contains specific object at path |
JSON_CONTAINS_PATH() |
Whether JSON document contains any data at path |
JSON_DEPTH() |
Maximum depth of JSON document |
JSON_EXTRACT() |
Return data from JSON document |
->> |
Return value from JSON column after evaluating path and unquoting the result; equivalent to JSON_UNQUOTE(JSON_EXTRACT()). |
JSON_INSERT() |
Insert data into JSON document |
JSON_KEYS() |
Array of keys from JSON document |
JSON_LENGTH() |
Number of elements in JSON document |
JSON_MERGE() |
Merge JSON documents |
JSON_OBJECT() |
Create JSON object |
JSON_QUOTE() |
Quote JSON document |
JSON_REMOVE() |
Remove data from JSON document |
JSON_REPLACE() |
Replace values in JSON document |
JSON_SEARCH() |
Path to value within JSON document |
JSON_SET() |
Insert data into JSON document |
JSON_TYPE() |
Type of JSON value |
JSON_UNQUOTE() |
Unquote JSON value |
JSON_VALID() |
Whether JSON value is valid |
1. 概述
MySQL裡的json分為json array和json object。 $表示整個json對象,在索引資料時用下標(對於json array,從0開始)或索引值(對於json object,含有特殊字元的key要用"括起來,比如$."my name")。
例如:[3, {"a": [5, 6], "b": 10}, [99, 100]],那麼:
$[0]:3
$[1]: {"a": [5, 6], "b": 10}
$[2] :[99, 100]
$[3] : NULL
$[1].a:[5, 6]
$[1].a[1]:6
$[1].b:10
$[2][0]:99
二、比較規則
json中的資料可以用 =, <, <=, >, >=, <>, !=, and <=> 進行比較。但json裡的資料類型可以是多樣的,那麼在不同類型之間進行比較時,就有優先順序了,高優先順序的要大於低優先順序的(可以用JSON_TYPE()函數查看類型)。優先順序從高到低如下:
BLOBBITOPAQUEDATETIMETIMEDATEBOOLEANARRAYOBJECTSTRINGINTEGER, DOUBLENULL
三、常用函數3.1 建立函數3.1.1 JSON_ARRAY
JSON_ARRAY(val1,val2,val3...)
產生一個包含指定元素的json數組。
mysql> SELECT JSON_ARRAY(1, "abc", NULL, TRUE, CURTIME());+---------------------------------------------+| JSON_ARRAY(1, "abc", NULL, TRUE, CURTIME()) |+---------------------------------------------+| [1, "abc", null, true, "11:30:24.000000"] |+---------------------------------------------+
3.1.2 JSON_OBJECT
JSON_OBJECT(key1,val1,key2,val2...)
產生一個包含指定K-V對的json object。如果有key為NULL或參數個數為奇數,則拋錯。
mysql> SELECT JSON_OBJECT(‘id‘, 87, ‘name‘, ‘carrot‘);+-----------------------------------------+| JSON_OBJECT(‘id‘, 87, ‘name‘, ‘carrot‘) |+-----------------------------------------+| {"id": 87, "name": "carrot"} |+-----------------------------------------+
3.1.3 JSON_QUOTE
JSON_QUOTE(json_val)
將json_val用"號括起來。
mysql> SELECT JSON_QUOTE(‘null‘), JSON_QUOTE(‘"null"‘);+--------------------+----------------------+| JSON_QUOTE(‘null‘) | JSON_QUOTE(‘"null"‘) |+--------------------+----------------------+| "null" | "\"null\"" |+--------------------+----------------------+mysql> SELECT JSON_QUOTE(‘[1, 2, 3]‘);+-------------------------+| JSON_QUOTE(‘[1, 2, 3]‘) |+-------------------------+| "[1, 2, 3]" |+-------------------------+
3.1.4 CONVERT
CONVERT(json_string,JSON)
mysql> select CONVERT(‘{"mail": "[email protected]", "name": "Amy"}‘,JSON);+----------------------------------------------------------+| CONVERT(‘{"mail": "[email protected]", "name": "Amy"}‘,JSON) |+----------------------------------------------------------+| {"mail": "[email protected]", "name": "Amy"} |+----------------------------------------------------------+
end
MySQL常用Json函數