MySQL常用Json函數

來源:互聯網
上載者:User

標籤:

官方文檔: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函數

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.