开发者

MySQL JSON 查询中的对象与数组技巧及查询示例

目录
  • jsON 对象查询
    • 1. JSON_CONTAINS
    • 2. JSON_EXTRACT
    • 3. JSON_TABLE
  • JSON 数组查询
    • 1. JSON_CONTAINS
    • 2. JSON_EXTRACT
    • 3. JSON_TABLE

mysql 中 JSON 对象和 JSON 数组查询的详细介绍及带有 WHERE 条件的查询示例:

JSON 对象查询

1. JSON_CONTAINS

用于检查 JSON 对象是否包含指定的值或 JSON 对象。

  • 语法JSON_CONTAINS(json_doc, val[, path])
  • 示例: 假设有一个表 person,其中有一个 JSON 列 info,存储了个人信息。
CREATE TABLE person (
    id INT PRIMARY KEY,
    info JSON
);
INSERT INTO person (id, info) VALUES (1, '{"name": "张三", "age": 30}');

查询 info 列中 name&qu编程客栈ot;张三" 的记录:

SELECT * FROM person WHERE JSON_CONTAINS(info, '"张三"', '$.name');

如果 info 列中包含 {"name": "张三"},则返回对应的行。

2. JSON_EXTRACT

用于从 JSON 对象中提取指定路径的值。

  • 语法JSON_EXTRACT(json_doc, path)
  • 示例: 查询 info 列中 age 大于 25 的记录
SELECT * FROM person WHERE JSON_EXTRACT(info, '$.age') > 25;

通过提取 age 的值并进行比较,筛选出符合条件的记录。

3. JSON_TABLE

将 JSON 对象转换为关系型表格,便于查询。

语法

JSON_TABLE(
    json_doc,
    path_expression
    COLUMNS(
        column_name column_type PATH json_path [on_empty] [on_error],
        ...
    )
) [AS] alias

示例

SELECT *
FROM person,
JSON_TABLE(
    info,
    '$' COLUMNS(
        name VARCHAR(50) PATH '$.name',
        age INT PATH '$.age'
    )
) AS jt
WHERE jt.age > 25;

info 列中的 JSON 数据转换为表格格式,然后通过 WHERE 条件筛选出 age 大于 25 的记录。

JSON 数组查询

1. JSON_CONTAINS

同样适用于 JSON 数组,检查数组是否包含指定的值。

  • 语法JSON_CONTAINS(json_array, val[, path])
  • 示例: 假设有一个表 fruits,其中有一个 JSON 列 fruits_array,存储了水果数组
CREATE TABLE fruits (
    id INT PRIMARY KEY,
    fruits_array JSON
);
INSERT INTO fruits (id, fruits_array) VALUES www.devze.com(1, '["apple", "banana", "orange"]');

查询 fruits_array 列中包含 "banana" 的记录

SELECT * FROM fruits WHERE JSON_CONTAINS(fruits_array, '"banana"');

如果 fruits_array 中包含 "banana",则返回对应的行。

2. JSON_EXTRACT

从 JSON 数组中提取指定索引的值。

  • 语法JSON_EXTRACT(json_array, path)
  • 示例: 查询 fruits_array 列中第二个水果为 "banana" 的记录
SELECT * FROM fruits WHERE JSON_EXTRACT(fruits_array, '$[1]') = '"banana"';

通过提取数组中索引为 1 的值并进行比较,筛选出符合条件的记录。

3. JSON_TABLE

将 JSON 数组转换为关系型表格。

语法

JSON_TABLE(
    json_doc,
    path_expression
    COLUMNS(
     js   column_name jscolumn_type PATH json_path [on_empty] [on_error],
        ...
    )
)编程 [AS] alias

示例

SELECT *
FROM fruits,
JSON_TABLE(
    fruits_array,
    '$[*]' COLUMNS(
        fruit VARCHAR(50) PATH '$'
    )
) AS jt
WHERE jt.fruit = 'banana';

fruits_array 列中的 JSON 数组转换为表格格式,然后通过 WHERE 条件筛选出包含 "banana" 的记录。

到此这篇关于MySQL JSON 查询中的对象与数组技巧的文章就介绍到这了,更多相关mysql json查询内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新数据库

数据库排行榜