摄影网站有哪些功能,jsp做网站注册页面,什么是网页设计与网站建设,猎头公司是啥意思MySQL JSON 路径表达式语法
语法
MySQL中支持的许多JSON函数#xff0c;需要路径表达式以便识别JSON文档中的特定元素。路径由路径的作用域和一个或多个路径段组成。在MySQL JSON函数中使用的路径中#xff0c;作用域始终是正在搜索或以其他方式操作的文档#xff0c;由前…MySQL JSON 路径表达式语法
语法
MySQL中支持的许多JSON函数需要路径表达式以便识别JSON文档中的特定元素。路径由路径的作用域和一个或多个路径段组成。在MySQL JSON函数中使用的路径中作用域始终是正在搜索或以其他方式操作的文档由前导的$字符表示。路径段由句点字符.分隔。数组中的单元格由[N]表示其中N是非负整数。键的名称必须是双引号字符串或有效的ECMAScript标识符。完整的语法如下所示
pathExpression:scope[(pathLeg)*]pathLeg:member | arrayLocation | doubleAsteriskmember:period ( keyName | asterisk )arrayLocation:leftBracket ( nonNegativeInteger | asterisk ) rightBracketkeyName:ESIdentifier | doubleQuotedStringdoubleAsterisk:**period:.asterisk:*leftBracket:[rightBracket:]正如前面所指出的在MySQL中路径的作用域始终是表示为 的正在操作的文档。您可以在 J S O N 路径表达式中使用“ 的正在操作的文档。您可以在JSON路径表达式中使用“ 的正在操作的文档。您可以在JSON路径表达式中使用“”作为文档的同义词。
通配符 * 和 ** 的使用如下所示
.* 表示对象中所有成员的值。[*] 表示数组中所有单元格的值。[prefix]**suffix 表示以prefix开头且以suffix结尾的所有路径。prefix是可选的而suffix是必需的换句话说路径不能以 ** 结尾
此外路径也不能包含 ***。
代码示例
示例1JSON_REPLACE
将JSON对象中的某些值替换为新值并返回更新后的JSON对象。
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]} |
-----------------------------------------------------示例2JSON_SET 和 JSON_INSERT
使用JSON_SET、JSON_INSERT和JSON_REPLACE函数向JSON对象中插入新值或替换现有值。
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]} |
-----------------------------------------------------示例3JSON_CONTAINS_PATH
使用JSON_CONTAINS_PATH函数检查JSON对象中是否存在指定的路径。
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 |
----------------------------------------示例4JSON_EXTRACT
使用JSON_EXTRACT函数从JSON数组中提取特定的值或子数组。
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] |
-----------------------------------------------示例5JSON_SEARCH
使用JSON_SEARCH函数在JSON数组或对象中搜索指定的值。
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 |
-------------------------------------------示例6JSON_VALUE
使用JSON_VALUE函数从JSON对象中获取特定键的值并可选地指定返回类型。
mysql SELECT JSON_VALUE({fname: Joe, lname: Palmer}, $.fname);
--------------------------------------------------------------
| JSON_VALUE({fname: Joe, lname: Palmer}, $.fname) |
--------------------------------------------------------------
| Joe |
--------------------------------------------------------------mysql SELECT JSON_VALUE({item: shoes, price: 49.95}, $.price- RETURNING DECIMAL(4,2)) AS price;
-------
| price |
-------
| 49.95 |
-------to 关键字
MySQL 8.0还支持使用to关键字对JSON数组的子集进行范围表示例如$[2 to 10]以及将last关键字用作数组最右边元素的同义词。具体示例如下
mysql SELECT JSON_EXTRACT([1, 2, 3, 4, 5], $[1 to 3]);
----------------------------------------------
| JSON_EXTRACT([1, 2, 3, 4, 5], $[1 to 3]) |
----------------------------------------------
| [2, 3, 4] |
----------------------------------------------
1 row in set (0.00 sec)参考链接
https://dev.mysql.com/doc/refman/8.0/en/json.html https://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html#function_json-replace https://dev.mysql.com/doc/refman/8.0/en/json.html#json-paths