0


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-目之瞬间

标签: json mysql 数据库

本文转载自: https://blog.csdn.net/csj19920730/article/details/130230494
版权归原作者 悠游134 所有, 如有侵权,请联系我们删除。

“MySQL JSON_TABLE() 函数”的评论:

还没有评论