当前位置: 首页 > news >正文

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

目录

JSON 对象查询

1. JSON_CONTAINS

2. JSON_EXTRACT

3. JSON_TABLE

JSON 数组查询

1. JSON_CONTAINS

2. JSON_EXTRACT

3. JSON_TABL

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"张三" 的记录:

    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_expressionCOLUMNS(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 (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_expressionCOLUMNS(column_name column_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" 的记录。

相关文章:

  • nginx配置
  • DeviceNET从站转EtherNET/IP主站在盐化工行业的创新应用
  • STM32L0看门狗设置LL库
  • 《Vuejs设计与实现》第 7 章(渲染器的设计)
  • 一个小小的 flask app, 几个小工具,拼凑一下
  • 【Linux】Linux 环境变量
  • skynet monitor线程的作用
  • Webpack常见的插件和模式
  • STM32最小CLion开发环境
  • MYSQL之表的内连和外连
  • ABP-Book Store Application中文讲解 - Part 9: Authors: User Interface
  • 3D旋转动态爱心 - Python创意代码
  • 缓存控制HTTP标头设置为“无缓存、无存储、必须重新验证”
  • AtCoder-abc407_e解析
  • Nginx+Tomcat负载均衡与动静分离架构
  • 13、企业应付管理(AP)全流程解析:从发票登记到付款完成
  • 【定时器】定时器存在的内存泄露问题
  • 机器学习14-迁移学习
  • HDFS分布式存储 zookeeper
  • 半导体制冷片(Thermoelectric Cooler,TEC)
  • 财务管理做的好的门户网站/hao123网址导航
  • 怎么样子做网站/企业网络推广技巧
  • 怎么做同城购物网站/沈阳网站建设
  • 助孕网站优化推广/专业seo推广
  • 响应式网站案例源码/衡阳seo排名
  • 杭州做网站/苏州优化排名seo