MySQL JSON_TABLE() 函数
介绍:JSON_TABLE()函数从一个指定的JSON文档中提取数据并返回一个具有指定列的关系表。
应用:数据库字段以JSON 存储后,实际应用需要对其中一个字段进行查询
语法:JSON_TABLE(json,path COLUMNS(column[,column[,...]]))column:name
实例:
- 数组分别取值
JSON 数组中有两个对象。
路径表达式 $[*]
则表示数组中的每个元素。
COLUMNS 子句定义了关系表中的 3 个列:
- id FOR ORDINALITY: 列名为
id
,列的内容为从1
开始的自增序列。 - x varchar(255) PATH '$.x': 列名为
x
,列的内容是对应了对象中的成员x
。 - y INT PATH '$.y'
:
列名为 y,列的内容是对应了对象中的成员y
。
select * FROM JSON_TABLE( '[{"x": "01", "y": 11}, {"x": "02", "y": 22}]', '$[*]' COLUMNS ( id FOR ORDINALITY, x varchar(255) PATH '$.x', y INT PATH '$.y' ) ) AS t;
|id |x |y |
|---|---|---|
|1 |01 |11 |
|2 |02 |22 |
- 直接取值
JSON 数组中有多个对象。
路径表达式 $[*]
则表示数组中的每个元素。
COLUMNS 子句定义了关系表中的 2 个列:
- id FOR ORDINALITY: 列名为
id
,列的内容为从1
开始的自增序列。 - x INT PATH '$': 列名为
x
,列的内容是对应了对象的值。
select * FROM JSON_TABLE( '["1","11","111"]', '$[*]' COLUMNS ( id FOR ORDINALITY, x INT PATH '$' ) ) AS t;
|id |x |
|---|---|
|1 |1 |
|2 |11 |
|3 |111|
备注:MySQL 8.0之后才能使用,否则执行代码会报错
替代查询方法:select * from table where name like '%"1"%'
参考:MySQL JSON_TABLE() 函数|mysql-目之瞬间
来源地址:https://blog.csdn.net/csj19920730/article/details/130230494
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341