实现 MySQL8 查询 JSON 字段

geteshi
2024-07-03 / 0 评论 / 15 阅读 / 正在检测是否收录...

步骤 1: 创建表

首先,我们需要创建一个包含 JSON 数据类型字段的表。假设我们要创建一个名为 users 的表,其中包含一个名为 info 的 JSON 字段。

CREATE TABLE users (
  id INT PRIMARY KEY AUTO_INCREMENT,
  info JSON
);

以上代码创建了一个名为 users 的表,其中包含 idinfo 两个字段。id 字段是主键,info 字段是 JSON 类型。

步骤 2: 插入数据

接下来,我们需要向表中插入一些包含 JSON 数据的示例数据。

INSERT INTO users (info)
VALUES ('{"name": "John", "age": 30, "city": "New York"}'),
       ('{"name": "Alice", "age": 25, "city": "London"}'),
       ('{"name": "Bob", "age": 35, "city": "Paris"}');

以上代码向 users 表中插入了三条数据,每条数据都包含一个 JSON 对象。

步骤 3: 查询 JSON 字段

现在,我们可以开始查询包含 JSON 字段的数据了。以下是一些常用的查询操作。

查询 JSON 字段的所有数据

要查询 JSON 字段的所有数据,可以使用简单的 SELECT 语句。

SELECT * FROM users;

image-20240702140411864

以上代码将返回 users 表中所有数据。

查询 JSON 字段的特定属性

要查询 JSON 字段的特定属性,可以使用 ->->> 运算符。

SELECT info->'$.name' AS name, info->'$.age' AS age
FROM users;

image-20240702140426263image-20240702140506584

以上代码将返回 users 表中每行数据的 nameage 属性。

查询 JSON 字段的条件

要查询满足特定条件的 JSON 字段数据,可以使用 WHERE 子句。

SELECT *
FROM users
WHERE info->'$.age' > 30;

image-20240702140612444

以上代码将返回 users 表中 age 大于 30 的数据。

查询 JSON 数组中的值

如果 JSON 字段是一个数组,可以使用 ->> 运算符和 JSON_TABLE 函数来查询数组中的值。

SELECT jt.value
FROM users, JSON_TABLE(info, '$.hobbies[*]' COLUMNS (value VARCHAR(255) PATH '$')) AS jt;
0

评论 (0)

取消