日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

MySQL處理JSON常見函數的使用

瀏覽:26日期:2023-10-05 10:23:05

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

2. 比較規則

json中的數據可以用 =, <, <=, >, >=, <>, !=, and <=> 進行比較。但json里的數據類型可以是多樣的,那么在不同類型之間進行比較時,就有優先級了,高優先級的要大于低優先級的(可以用JSON_TYPE()函數查看類型)。優先級從高到低如下:

BLOBBITOPAQUEDATETIMETIMEDATEBOOLEANARRAYOBJECTSTRINGINTEGER, DOUBLENULL 

3. 常用函數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': 'amy@gmail.com', 'name': 'Amy'}’,JSON);+----------------------------------------------------------+| CONVERT(’{'mail': 'amy@gmail.com', 'name': 'Amy'}’,JSON) |+----------------------------------------------------------+| {'mail': 'amy@gmail.com', 'name': 'Amy'} |+----------------------------------------------------------+3.2 查詢函數

3.2.1 JSON_CONTAINS

JSON_CONTAINS(json_doc, val[, path])

查詢json文檔是否在指定path包含指定的數據,包含則返回1,否則返回0。如果有參數為NULL或path不存在,則返回NULL。

mysql> SET @j = ’{'a': 1, 'b': 2, 'c': {'d': 4}}’;mysql> SET @j2 = ’1’;mysql> SELECT JSON_CONTAINS(@j, @j2, ’$.a’);+-------------------------------+| JSON_CONTAINS(@j, @j2, ’$.a’) |+-------------------------------+| 1 |+-------------------------------+mysql> SELECT JSON_CONTAINS(@j, @j2, ’$.b’);+-------------------------------+| JSON_CONTAINS(@j, @j2, ’$.b’) |+-------------------------------+| 0 |+-------------------------------+ mysql> SET @j2 = ’{'d': 4}’;mysql> SELECT JSON_CONTAINS(@j, @j2, ’$.a’);+-------------------------------+| JSON_CONTAINS(@j, @j2, ’$.a’) |+-------------------------------+| 0 |+-------------------------------+mysql> SELECT JSON_CONTAINS(@j, @j2, ’$.c’);+-------------------------------+| JSON_CONTAINS(@j, @j2, ’$.c’) |+-------------------------------+| 1 |+-------------------------------+

3.2.2 JSON_CONTAINS_PATH

JSON_CONTAINS_PATH(json_doc, one_or_all, path[, path] ...)

查詢是否存在指定路徑,存在則返回1,否則返回0。如果有參數為NULL,則返回NULL。

one_or_all只能取值'one'或'all',one表示只要有一個存在即可;all表示所有的都存在才行。

mysql> SET @j = ’{'a': 1, 'b': 2, 'c': {'d': 4}}’;mysql> SELECT JSON_CONTAINS_PATH(@j, ’one’, ’$.a’, ’$.e’);+---------------------------------------------+| JSON_CONTAINS_PATH(@j, ’one’, ’$.a’, ’$.e’) |+---------------------------------------------+| 1 |+---------------------------------------------+mysql> SELECT JSON_CONTAINS_PATH(@j, ’all’, ’$.a’, ’$.e’);+---------------------------------------------+| JSON_CONTAINS_PATH(@j, ’all’, ’$.a’, ’$.e’) |+---------------------------------------------+| 0 |+---------------------------------------------+mysql> SELECT JSON_CONTAINS_PATH(@j, ’one’, ’$.c.d’);+----------------------------------------+| JSON_CONTAINS_PATH(@j, ’one’, ’$.c.d’) |+----------------------------------------+| 1 |+----------------------------------------+mysql> SELECT JSON_CONTAINS_PATH(@j, ’one’, ’$.a.d’);+----------------------------------------+| JSON_CONTAINS_PATH(@j, ’one’, ’$.a.d’) |+----------------------------------------+| 0 |+----------------------------------------+

3.2.3 JSON_EXTRACT

JSON_EXTRACT(json_doc, path[, path] ...)

從json文檔里抽取數據。如果有參數有NULL或path不存在,則返回NULL。如果抽取出多個path,則返回的數據封閉在一個json array里。

mysql> SELECT JSON_EXTRACT(’[10, 20, [30, 40]]’, ’$[1]’);+--------------------------------------------+| JSON_EXTRACT(’[10, 20, [30, 40]]’, ’$[1]’) |+--------------------------------------------+| 20 |+--------------------------------------------+mysql> SELECT JSON_EXTRACT(’[10, 20, [30, 40]]’, ’$[1]’, ’$[0]’);+----------------------------------------------------+| JSON_EXTRACT(’[10, 20, [30, 40]]’, ’$[1]’, ’$[0]’) |+----------------------------------------------------+| [20, 10] |+----------------------------------------------------+mysql> SELECT JSON_EXTRACT(’[10, 20, [30, 40]]’, ’$[2][*]’);+-----------------------------------------------+| JSON_EXTRACT(’[10, 20, [30, 40]]’, ’$[2][*]’) |+-----------------------------------------------+| [30, 40] |+-----------------------------------------------+

在MySQL 5.7.9+里可以用'->'替代。

mysql> SELECT c, JSON_EXTRACT(c, '$.id'), g > FROM jemp > WHERE JSON_EXTRACT(c, '$.id') > 1 > ORDER BY JSON_EXTRACT(c, '$.name');+-------------------------------+-----------+------+| c | c->'$.id' | g |+-------------------------------+-----------+------+| {'id': '3', 'name': 'Barney'} | '3' | 3 || {'id': '4', 'name': 'Betty'} | '4' | 4 || {'id': '2', 'name': 'Wilma'} | '2' | 2 |+-------------------------------+-----------+------+3 rows in set (0.00 sec) mysql> SELECT c, c->'$.id', g > FROM jemp > WHERE c->'$.id' > 1 > ORDER BY c->'$.name';+-------------------------------+-----------+------+| c | c->'$.id' | g |+-------------------------------+-----------+------+| {'id': '3', 'name': 'Barney'} | '3' | 3 || {'id': '4', 'name': 'Betty'} | '4' | 4 || {'id': '2', 'name': 'Wilma'} | '2' | 2 |+-------------------------------+-----------+------+3 rows in set (0.00 sec)

在MySQL 5.7.13+,還可以用'->>'表示去掉抽取結果的'號,下面三種效果是一樣的:

JSON_UNQUOTE( JSON_EXTRACT(column, path) ) JSON_UNQUOTE(column -> path) column->>path

mysql> SELECT * FROM jemp WHERE g > 2;+-------------------------------+------+| c | g |+-------------------------------+------+| {'id': '3', 'name': 'Barney'} | 3 || {'id': '4', 'name': 'Betty'} | 4 |+-------------------------------+------+2 rows in set (0.01 sec) mysql> SELECT c->’$.name’ AS name -> FROM jemp WHERE g > 2;+----------+| name |+----------+| 'Barney' || 'Betty' |+----------+2 rows in set (0.00 sec) mysql> SELECT JSON_UNQUOTE(c->’$.name’) AS name -> FROM jemp WHERE g > 2;+--------+| name |+--------+| Barney || Betty |+--------+2 rows in set (0.00 sec) mysql> SELECT c->>’$.name’ AS name -> FROM jemp WHERE g > 2;+--------+| name |+--------+| Barney || Betty |+--------+2 rows in set (0.00 sec)

3.2.4 JSON_KEYS

JSON_KEYS(json_doc[, path])

獲取json文檔在指定路徑下的所有鍵值,返回一個json array。如果有參數為NULL或path不存在,則返回NULL。

mysql> SELECT JSON_KEYS(’{'a': 1, 'b': {'c': 30}}’);+---------------------------------------+| JSON_KEYS(’{'a': 1, 'b': {'c': 30}}’) |+---------------------------------------+| ['a', 'b'] |+---------------------------------------+mysql> SELECT JSON_KEYS(’{'a': 1, 'b': {'c': 30}}’, ’$.b’);+----------------------------------------------+| JSON_KEYS(’{'a': 1, 'b': {'c': 30}}’, ’$.b’) |+----------------------------------------------+| ['c'] |+----------------------------------------------+

3.2.5 JSON_SEARCH

JSON_SEARCH(json_doc, one_or_all, search_str[, escape_char[, path] ...])

查詢包含指定字符串的paths,并作為一個json array返回。如果有參數為NUL或path不存在,則返回NULL。

one_or_all:'one'表示查詢到一個即返回;'all'表示查詢所有。 search_str:要查詢的字符串。 可以用LIKE里的’%’或‘_’匹配。 path:在指定path下查。

mysql> SET @j = ’['abc', [{'k': '10'}, 'def'], {'x':'abc'}, {'y':'bcd'}]’; mysql> SELECT JSON_SEARCH(@j, ’one’, ’abc’);+-------------------------------+| JSON_SEARCH(@j, ’one’, ’abc’) |+-------------------------------+| '$[0]' |+-------------------------------+ mysql> SELECT JSON_SEARCH(@j, ’all’, ’abc’);+-------------------------------+| JSON_SEARCH(@j, ’all’, ’abc’) |+-------------------------------+| ['$[0]', '$[2].x'] |+-------------------------------+ mysql> SELECT JSON_SEARCH(@j, ’all’, ’ghi’);+-------------------------------+| JSON_SEARCH(@j, ’all’, ’ghi’) |+-------------------------------+| NULL |+-------------------------------+ mysql> SELECT JSON_SEARCH(@j, ’all’, ’10’);+------------------------------+| JSON_SEARCH(@j, ’all’, ’10’) |+------------------------------+| '$[1][0].k' |+------------------------------+ mysql> SELECT JSON_SEARCH(@j, ’all’, ’10’, NULL, ’$’);+-----------------------------------------+| JSON_SEARCH(@j, ’all’, ’10’, NULL, ’$’) |+-----------------------------------------+| '$[1][0].k' |+-----------------------------------------+ mysql> SELECT JSON_SEARCH(@j, ’all’, ’10’, NULL, ’$[*]’);+--------------------------------------------+| JSON_SEARCH(@j, ’all’, ’10’, NULL, ’$[*]’) |+--------------------------------------------+| '$[1][0].k'|+--------------------------------------------+ mysql> SELECT JSON_SEARCH(@j, ’all’, ’10’, NULL, ’$**.k’);+---------------------------------------------+| JSON_SEARCH(@j, ’all’, ’10’, NULL, ’$**.k’) |+---------------------------------------------+| '$[1][0].k' |+---------------------------------------------+ mysql> SELECT JSON_SEARCH(@j, ’all’, ’10’, NULL, ’$[*][0].k’);+-------------------------------------------------+| JSON_SEARCH(@j, ’all’, ’10’, NULL, ’$[*][0].k’) |+-------------------------------------------------+| '$[1][0].k' |+-------------------------------------------------+ mysql> SELECT JSON_SEARCH(@j, ’all’, ’10’, NULL, ’$[1]’);+--------------------------------------------+| JSON_SEARCH(@j, ’all’, ’10’, NULL, ’$[1]’) |+--------------------------------------------+| '$[1][0].k'|+--------------------------------------------+ mysql> SELECT JSON_SEARCH(@j, ’all’, ’10’, NULL, ’$[1][0]’);+-----------------------------------------------+| JSON_SEARCH(@j, ’all’, ’10’, NULL, ’$[1][0]’) |+-----------------------------------------------+| '$[1][0].k' |+-----------------------------------------------+ mysql> SELECT JSON_SEARCH(@j, ’all’, ’abc’, NULL, ’$[2]’);+---------------------------------------------+| JSON_SEARCH(@j, ’all’, ’abc’, NULL, ’$[2]’) |+---------------------------------------------+| '$[2].x' |+---------------------------------------------+ mysql> SELECT JSON_SEARCH(@j, ’all’, ’%a%’);+-------------------------------+| JSON_SEARCH(@j, ’all’, ’%a%’) |+-------------------------------+| ['$[0]', '$[2].x'] |+-------------------------------+ mysql> SELECT JSON_SEARCH(@j, ’all’, ’%b%’);+-------------------------------+| JSON_SEARCH(@j, ’all’, ’%b%’) |+-------------------------------+| ['$[0]', '$[2].x', '$[3].y'] |+-------------------------------+ mysql> SELECT JSON_SEARCH(@j, ’all’, ’%b%’, NULL, ’$[0]’);+---------------------------------------------+| JSON_SEARCH(@j, ’all’, ’%b%’, NULL, ’$[0]’) |+---------------------------------------------+| '$[0]' |+---------------------------------------------+ mysql> SELECT JSON_SEARCH(@j, ’all’, ’%b%’, NULL, ’$[2]’);+---------------------------------------------+| JSON_SEARCH(@j, ’all’, ’%b%’, NULL, ’$[2]’) |+---------------------------------------------+| '$[2].x' |+---------------------------------------------+ mysql> SELECT JSON_SEARCH(@j, ’all’, ’%b%’, NULL, ’$[1]’);+---------------------------------------------+| JSON_SEARCH(@j, ’all’, ’%b%’, NULL, ’$[1]’) |+---------------------------------------------+| NULL |+---------------------------------------------+ mysql> SELECT JSON_SEARCH(@j, ’all’, ’%b%’, ’’, ’$[1]’);+-------------------------------------------+| JSON_SEARCH(@j, ’all’, ’%b%’, ’’, ’$[1]’) |+-------------------------------------------+| NULL |+-------------------------------------------+ mysql> SELECT JSON_SEARCH(@j, ’all’, ’%b%’, ’’, ’$[3]’);+-------------------------------------------+| JSON_SEARCH(@j, ’all’, ’%b%’, ’’, ’$[3]’) |+-------------------------------------------+| '$[3].y' |+-------------------------------------------+3.3 修改函數

3.3.1 JSON_APPEND/JSON_ARRAY_APPEND

JSON_ARRAY_APPEND(json_doc, path, val[, path, val] ...)

在指定path的json array尾部追加val。如果指定path是一個json object,則將其封裝成一個json array再追加。如果有參數為NULL,則返回NULL。

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'] |+---------------------------------+

3.3.2 JSON_ARRAY_INSERT

JSON_ARRAY_INSERT(json_doc, path, val[, path, val] ...)

在path指定的json array元素插入val,原位置及以右的元素順次右移。如果path指定的數據非json array元素,則略過此val;如果指定的元素下標超過json array的長度,則插入尾部。

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

3.3.3 JSON_INSERT/JSON_REPLACE/JSON_SET

JSON_INSERT(json_doc, path, val[, path, val] ...)

在指定path下插入數據,如果path已存在,則忽略此val(不存在才插入)。

mysql> SET @j = ’{ 'a': 1, 'b': [2, 3]}’;mysql> SELECT JSON_INSERT(@j, ’$.a’, 10, ’$.c’, ’[true, false]’);+----------------------------------------------------+| JSON_INSERT(@j, ’$.a’, 10, ’$.c’, ’[true, false]’) |+----------------------------------------------------+| {'a': 1, 'b': [2, 3], 'c': '[true, false]'} |+----------------------------------------------------+

JSON_REPLACE(json_doc, path, val[, path, val] ...)

替換指定路徑的數據,如果某個路徑不存在則略過(存在才替換)。如果有參數為NULL,則返回NULL。

mysql> SET @j = ’{ 'a': 1, 'b': [2, 3]}’;mysql> SELECT JSON_REPLACE(@j, ’$.a’, 10, ’$.c’, ’[true, false]’);+-----------------------------------------------------+| JSON_REPLACE(@j, ’$.a’, 10, ’$.c’, ’[true, false]’) |+-----------------------------------------------------+| {'a': 10, 'b': [2, 3]} |+-----------------------------------------------------+

JSON_SET(json_doc, path, val[, path, val] ...)

設置指定路徑的數據(不管是否存在)。如果有參數為NULL,則返回NULL。

mysql> SET @j = ’{ 'a': 1, 'b': [2, 3]}’;mysql> SELECT JSON_SET(@j, ’$.a’, 10, ’$.c’, ’[true, false]’);+-------------------------------------------------+| JSON_SET(@j, ’$.a’, 10, ’$.c’, ’[true, false]’) |+-------------------------------------------------+| {'a': 10, 'b': [2, 3], 'c': '[true, false]'} |+-------------------------------------------------+mysql> SELECT JSON_INSERT(@j, ’$.a’, 10, ’$.c’, ’[true, false]’);+----------------------------------------------------+| JSON_INSERT(@j, ’$.a’, 10, ’$.c’, ’[true, false]’) |+----------------------------------------------------+| {'a': 1, 'b': [2, 3], 'c': '[true, false]'} |+----------------------------------------------------+mysql> SELECT JSON_REPLACE(@j, ’$.a’, 10, ’$.c’, ’[true, false]’);+-----------------------------------------------------+| JSON_REPLACE(@j, ’$.a’, 10, ’$.c’, ’[true, false]’) |+-----------------------------------------------------+| {'a': 10, 'b': [2, 3]} |+-----------------------------------------------------+

3.3.4 JSON_MERGE

JSON_MERGE(json_doc, json_doc[, json_doc] ...)

merge多個json文檔。規則如下:

如果都是json array,則結果自動merge為一個json array; 如果都是json object,則結果自動merge為一個json object; 如果有多種類型,則將非json array的元素封裝成json array再按照規則一進行mege。

mysql> SELECT JSON_MERGE(’[1, 2]’, ’[true, false]’);+---------------------------------------+| JSON_MERGE(’[1, 2]’, ’[true, false]’) |+---------------------------------------+| [1, 2, true, false] |+---------------------------------------+mysql> SELECT JSON_MERGE(’{'name': 'x'}’, ’{'id': 47}’);+-------------------------------------------+| JSON_MERGE(’{'name': 'x'}’, ’{'id': 47}’) |+-------------------------------------------+| {'id': 47, 'name': 'x'} |+-------------------------------------------+mysql> SELECT JSON_MERGE(’1’, ’true’);+-------------------------+| JSON_MERGE(’1’, ’true’) |+-------------------------+| [1, true]|+-------------------------+mysql> SELECT JSON_MERGE(’[1, 2]’, ’{'id': 47}’);+------------------------------------+| JSON_MERGE(’[1, 2]’, ’{'id': 47}’) |+------------------------------------+| [1, 2, {'id': 47}] |+------------------------------------+

3.3.5 JSON_REMOVE

JSON_REMOVE(json_doc, path[, path] ...)

移除指定路徑的數據,如果某個路徑不存在則略過此路徑。如果有參數為NULL,則返回NULL。

mysql> SET @j = ’['a', ['b', 'c'], 'd']’;mysql> SELECT JSON_REMOVE(@j, ’$[1]’);+-------------------------+| JSON_REMOVE(@j, ’$[1]’) |+-------------------------+| ['a', 'd'] |+-------------------------+

3.3.6 JSON_UNQUOTE

JSON_UNQUOTE(val)

去掉val的引號。如果val為NULL,則返回NULL。

mysql> SET @j = ’'abc'’;mysql> SELECT @j, JSON_UNQUOTE(@j);+-------+------------------+| @j | JSON_UNQUOTE(@j) |+-------+------------------+| 'abc' | abc |+-------+------------------+mysql> SET @j = ’[1, 2, 3]’;mysql> SELECT @j, JSON_UNQUOTE(@j);+-----------+------------------+| @j | JSON_UNQUOTE(@j) |+-----------+------------------+| [1, 2, 3] | [1, 2, 3] |+-----------+------------------+3.4 JSON特性查詢

3.4.1 JSON_DEEPTH

JSON_DEPTH(json_doc)

獲取json文檔的深度。如果參數為NULL,則返回NULL。

空的json array、json object或標量的深度為1。

mysql> SELECT JSON_DEPTH(’{}’), JSON_DEPTH(’[]’), JSON_DEPTH(’true’);+------------------+------------------+--------------------+| JSON_DEPTH(’{}’) | JSON_DEPTH(’[]’) | JSON_DEPTH(’true’) |+------------------+------------------+--------------------+|1 |1 | 1 |+------------------+------------------+--------------------+mysql> SELECT JSON_DEPTH(’[10, 20]’), JSON_DEPTH(’[[], {}]’);+------------------------+------------------------+| JSON_DEPTH(’[10, 20]’) | JSON_DEPTH(’[[], {}]’) |+------------------------+------------------------+| 2 | 2 |+------------------------+------------------------+mysql> SELECT JSON_DEPTH(’[10, {'a': 20}]’);+-------------------------------+| JSON_DEPTH(’[10, {'a': 20}]’) |+-------------------------------+| 3 |+-------------------------------+

3.4.2 JSON_LENGTH

JSON_LENGTH(json_doc[, path])

獲取指定路徑下的長度。如果參數為NULL,則返回NULL?!?/p>

長度的計算規則:

標量的長度為1; json array的長度為元素的個數; json object的長度為key的個數。

mysql> SELECT JSON_LENGTH(’[1, 2, {'a': 3}]’);+---------------------------------+| JSON_LENGTH(’[1, 2, {'a': 3}]’) |+---------------------------------+|3 |+---------------------------------+mysql> SELECT JSON_LENGTH(’{'a': 1, 'b': {'c': 30}}’);+-----------------------------------------+| JSON_LENGTH(’{'a': 1, 'b': {'c': 30}}’) |+-----------------------------------------+| 2 |+-----------------------------------------+mysql> SELECT JSON_LENGTH(’{'a': 1, 'b': {'c': 30}}’, ’$.b’);+------------------------------------------------+| JSON_LENGTH(’{'a': 1, 'b': {'c': 30}}’, ’$.b’) |+------------------------------------------------+| 1 |+------------------------------------------------+

3.4.3 JSON_TYPE

JSON_TYPE(json_val)

獲取json文檔的具體類型。如果參數為NULL,則返回NULL。

3.4.4 JSON_VALID

JSON_VALID(val)

判斷val是否為有效的json格式,是為1,不是為0。如果參數為NUL,則返回NULL。

mysql> SELECT JSON_VALID(’{'a': 1}’);+------------------------+| JSON_VALID(’{'a': 1}’) |+------------------------+| 1 |+------------------------+mysql> SELECT JSON_VALID(’hello’), JSON_VALID(’'hello'’);+---------------------+-----------------------+| JSON_VALID(’hello’) | JSON_VALID(’'hello'’) |+---------------------+-----------------------+| 0 | 1 |+---------------------+-----------------------+

到此這篇關于MySQL處理JSON常見函數的使用的文章就介紹到這了,更多相關MySQL JSON常見函數內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: MySQL 數據庫
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
婷婷丁香综合| 久久国际精品| 欧美亚洲日本精品| 久久精品国产亚洲一区二区三区| 精品美女久久| 日韩不卡免费高清视频| 亚洲va在线| 鲁大师成人一区二区三区 | 国产美女精品| 欧美91精品| 一区二区三区四区精品视频| 日韩精品一区二区三区中文在线 | 国产欧美日韩精品一区二区免费 | 亚洲欧洲免费| 麻豆精品少妇| 久久一级电影| 日韩欧美精品一区二区综合视频| 国产欧美日韩在线观看视频| 91av亚洲| 首页国产欧美日韩丝袜| 国产精品乱战久久久| 麻豆精品蜜桃| 日本不卡一二三区黄网| 国产一区二区三区四区二区| 精品日韩毛片| 国产精品美女在线观看直播| 韩国精品主播一区二区在线观看| 热久久久久久久| 精品国产亚洲日本| 樱桃成人精品视频在线播放| 久久精品av麻豆的观看方式| av高清一区| 中文字幕一区二区三区四区久久| 美女性感视频久久| 国产亚洲精品v| 精品三级国产| 日韩中出av| 久久久天天操| 国产亚洲欧美日韩在线观看一区二区| 久久久夜精品| 欧美aa在线视频| 久久国产精品久久久久久电车| 日韩av自拍| 日韩av网站在线免费观看| 欧美精选视频一区二区| 国产亚洲精品精品国产亚洲综合| 91精品国产乱码久久久久久久| 日韩有码av| 亚洲a在线视频| 久久久免费人体| 久久成人一区| 四虎884aa成人精品最新| 国产情侣久久| 综合激情在线| 99视频精品视频高清免费| 国产精品对白| 日韩在线网址| 不卡视频在线| 日韩深夜视频| 精品网站aaa| 日韩va亚洲va欧美va久久| 亚洲国产一区二区在线观看 | 日韩av不卡一区二区| 激情久久久久久| 日产精品一区二区| 欧美天堂一区二区| 亚洲久久在线| 日韩制服丝袜先锋影音| 欧美亚洲在线日韩| 精品国产乱码久久久久久樱花| 日韩成人av影视| 视频一区日韩| 男女男精品视频网| 五月天综合网站| 在线天堂中文资源最新版| 国产精品久久久久久久久久齐齐 | 欧美欧美黄在线二区| 国产精品普通话对白| 日韩精品免费一区二区三区| 超级白嫩亚洲国产第一| 欧美aⅴ一区二区三区视频| 欧美亚洲tv| 国产欧美自拍| 日本va欧美va欧美va精品| 精品黄色一级片| 免费视频一区二区| 好看不卡的中文字幕| 亚洲电影有码| 日韩精品不卡一区二区| 精品三级国产| 精品日产乱码久久久久久仙踪林| 国产精品日韩精品中文字幕| 久久精品凹凸全集| 国产亚洲高清在线观看| 日韩av影院| 国产日韩一区二区三区在线| 日韩高清一级| 91精品国产自产在线丝袜啪| 日韩一区精品视频| 国产视频一区在线观看一区免费| 伊人影院久久| 婷婷亚洲五月| 日韩在线一区二区| 蜜臀精品一区二区三区在线观看| 天堂av在线一区| 亚洲三级网站| 欧美亚洲三区| 精品亚洲自拍| 九色porny丨国产首页在线| 欧产日产国产精品视频| 久久亚洲精品中文字幕蜜潮电影| 激情欧美丁香| 日本 国产 欧美色综合| 一级欧美视频| 国产精品最新自拍| 国产一区二区三区网| 亚洲播播91| 欧美女激情福利| 亚洲毛片一区| 久久99性xxx老妇胖精品| 精品亚洲二区| 亚洲香蕉网站| 亚洲bt欧美bt精品777| 欧美日韩 国产精品| 精品亚洲免a| 久久精品影视| 男人的天堂久久精品| 欧美日本一区| 国产69精品久久| 91久久国产| 日韩高清不卡在线| 国产一区二区三区91| 九九在线精品| 久久精品凹凸全集| 麻豆mv在线观看| 欧美日韩国产传媒| 日产欧产美韩系列久久99| 精品久久影院| 99国产成+人+综合+亚洲欧美| 日韩激情网站| 青青青免费在线视频| 在线免费观看亚洲| 精品一区二区三区中文字幕视频 | 色黄视频在线观看| 免费在线观看不卡| 另类综合日韩欧美亚洲| 国产字幕视频一区二区| 奇米亚洲欧美| 婷婷久久一区| 精品国产乱码| 亚洲日产国产精品| 日产精品一区| 91欧美极品| 成人av动漫在线观看| 日韩黄色av| 欧美丝袜一区| 久久久久观看| 亚洲狼人精品一区二区三区| 国产v日韩v欧美v| 亚洲18在线| 精品在线91| 91亚洲自偷观看高清| 日韩国产在线观看| 免费av一区二区三区四区| 久久精品毛片| 亚洲麻豆一区| 国产尤物精品| 国产一区二区三区黄网站| 亚洲视频国产| 亚洲天堂一区二区| 欧美国产先锋| 日本亚洲三级在线| 国产精品普通话对白| 日韩欧美另类一区二区| 国产精品玖玖玖在线资源| 蜜桃av一区二区三区电影| 三级精品视频| 精品午夜久久| 国产精品美女午夜爽爽| 亚洲精品婷婷| 亚洲自啪免费| 激情久久婷婷| 国产亚洲一区二区手机在线观看| 免费一级欧美片在线观看网站| 视频一区欧美精品| 欧美.日韩.国产.一区.二区| 国内不卡的一区二区三区中文字幕| 日本不卡一区二区| 美女久久一区| 午夜国产精品视频| 久久裸体视频| 成人啊v在线| 欧美黄色网页| 久久男人天堂| 国产在线观看www| 国产在线看片免费视频在线观看| 国产精品久久免费视频| 国产伦精品一区二区三区视频 | 国产精品a久久久久| 精品国产一区二区三区av片|