JSON_TABLE 是mysql8.0版本后支持的函数,用于将json字符串映射为mysql的表
JSON_TABLE 实战
// table1.jsonFiled = ["1000000000000191","1000000000000192","1000000000000193","1000000000000194"]
SELECT
GROUP_CONCAT(table2.filedName SEPARATOR '; ') Names
from
JSON_TABLE(table1.jsonFiled , "$[*]" COLUMNS(
m1 varchar(40) PATH "$"
)
) as aaaa
解释:该段sql表示将table1中的jsonFiled字段值映射为aaaa表,并将值映射在aaaa表中的m1字段。
JSON_TABLE(
expr,
path COLUMNS (column_list)
) [AS] alias
column_list:
column[, column][, ...]
column:
name FOR ORDINALITY
| name type PATH string path [on_empty] [on_error]
| name type EXISTS PATH string path
| NESTED [PATH] path COLUMNS (column_list)
on_empty:
{NULL | DEFAULT json_string | ERROR} ON EMPTY
on_error:
{NULL | DEFAULT json_string | ERROR} ON ERROR
该段是mysql官网给出的关于JSON_TABLE的使用和解释
结合官网给出实例分析
mysql> SELECT *
-> FROM
-> JSON_TABLE(
-> '[{"x":2,"y":"8"},{"x":"3","y":"7"},{"x":"4","y":6}]',
-> "$[1]" COLUMNS(
-> xval VARCHAR(100) PATH "$.x",
-> yval VARCHAR(100) PATH "$.y"
-> )
-> ) AS jt1;
+------+------+
| xval | yval |
+------+------+
| 3 | 7 |
+------+------+
JSON_TABLE : json转table的函数
[{“x”:2,“y”:“8”},{“x”:“3”,“y”:“7”},{“x”:“4”,“y”:6}] : 这串是给出的json字符串示例
$[1] : 表示获取这个json结合中下表为1位置的对象进行解析
[
∗
]
:表示解析全部
j
s
o
n
串信息
C
O
L
U
M
N
S
:表示解析
j
s
o
n
串映射的字段描述
x
v
a
l
:表示自定义字段名
x
v
a
l
V
A
R
C
H
A
R
(
100
)
P
A
T
H
"
[*] : 表示解析全部json串信息 COLUMNS : 表示解析json串映射的字段描述 xval : 表示自定义字段名 xval VARCHAR(100) PATH "
[∗]:表示解析全部json串信息COLUMNS:表示解析json串映射的字段描述xval:表示自定义字段名xvalVARCHAR(100)PATH".x", : 表示xval字段类型为VARCHAR,字段值最大长度为100 ,PATH是固定格式,$.x 表示 xval对应的就是json字符串对象中的x字段。
AS jt1 : 表示给映射的表起个名字,叫jt1。
名字和字段都可以随便取。