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

MySQL 中JSON_CONTAINS ,用于检查 JSON 文档是否包含特定的值

JSON_CONTAINS 是 MySQL 中的一个函数,用于检查 JSON 文档是否包含特定的值。下面是一些使用 JSON_CONTAINS 的 SQL 示例:

基本用法

SELECT * FROM your_table 
WHERE JSON_CONTAINS(json_column, '"value"', '$.path');

其中:

  • json_column 是包含 JSON 数据的列
  • '"value"' 是要搜索的值(注意需要用双引号包裹,然后外面再用单引号)
  • '$.path' 是可选的 JSON 路径参数

在我的方法中

假设表中有一列 department_ids 存储了部门 ID 的 JSON 数组,例如 ["2", "6", "7", "8", "1"],你想查询是否包含特定部门 ID(例如 "6"),SQL 可以这样写:
 

SELECT * FROM your_table 
WHERE JSON_CONTAINS(department_ids, '"6"');

使用变量

如果你要在 MyBatis 或 MyBatisPlus 中使用参数:

SELECT * FROM your_table 
WHERE JSON_CONTAINS(department_ids, #{deptId});

在mybatisplus中使用

User userInfo = UserHolder.getUserInfo();
        QueryWrapper<Kb> queryWrapper = new QueryWrapper<>();
        if (StrUtil.isNotBlank(keywords)) queryWrapper.like("name", keywords);
      
            //查看是否在自己所在的部门
        queryWrapper.apply("JSON_CONTAINS(allow_dept_ids, {0})", "\"" + userInfo.getDeptId() + "\"");
            queryWrapper.eq("is_share", true);
       
        queryWrapper.orderByDesc("id");
        Page<Kb> pager = this.page(new Page<>(page, pageSize), queryWrapper);
        return Result.success(Pager.from(pager));

打印出来的sql

 

SELECT
  id,
  NAME,
  allow_dept_ids,
  file_count,
  is_share,
  is_deleted,
  create_time,
  update_time,
  create_by,
  update_by 
FROM
  ct_kb 
WHERE
  is_deleted = 0 
  AND ( JSON_CONTAINS( allow_dept_ids, '"1"' ) AND is_share = TRUE ) 
ORDER BY
  id DESC

相关文章:

  • 开源AI大模型AI智能名片S2B2C商城小程序:科技浪潮下的商业新引擎
  • 头歌 | WPS文档基本操作
  • Zephyr、FreeRTOS、RT-Thread 低功耗模式对比分析
  • ZYNQ笔记(四):AXI GPIO
  • Java-JDBC入门程序、预编译SQL
  • 动手学习:路径规划原理及常用算法
  • HTTP协议原理深度解析:从基础到实践
  • FreeRTOS动态任务创建
  • 线代[13]|线性代数题37道以及数学分析题3道(多图预警)
  • 【无标题】spark编程
  • HTTP:二.URI及相关术语
  • Linux 调试代码工具:gdb
  • 九屏图分析法以手机为例
  • OPEX baota 2024.02.26
  • NSGA-II 多目标优化 —— 理论、案例与交互式 GUI 实现
  • OpenCV 图像旋转
  • 笔记:头文件与静态库的使用及组织方式
  • 机器学习 从入门到精通 day_03
  • Android Studio Logcat V2 使用指南(适配 2024 年版本)
  • LangChain4j(2):Chat、流式与文生图模型功能
  • 商城网站建设计划书/北京百度推广投诉电话
  • 美食网站是怎么做的/营销型网站模板
  • 卖文章的网站源码/站长工具高清无吗
  • 做讲课ppt的网站/成都百度提升优化
  • wordpress 企业官网/seo还能赚钱吗
  • 新日源建设集团有限公司网站/营销是什么意思