首页 > 数据库 >mysql根据json字段内容作为查询条件(包括json数组)检索数据

mysql根据json字段内容作为查询条件(包括json数组)检索数据

时间:2022-11-08 17:46:04浏览次数:49  
标签:检索 JSON 查询 json mysql 字段

最近用到了mysql5.7的json字段的检索查询,发现挺好用的,记录一下笔记
我们有一个日志表,里面的data字段是保存不同对象的json数据,遇到想根据里面的json的字段内容作为条件查询的情况

mysql根据json字段的内容检索查询数据

  • 使用 字段->'$.json属性'进行查询条件
  • 使用json_extract函数查询,json_extract(字段,"$.json属性")
  • 根据json数组查询,用JSON_CONTAINS(字段,JSON_OBJECT('json属性', "内容"))

mysql5.7以上支持json的操作,以及增加了json存储类型
一般数据库存储json类型的数据会用json类型或者text类型

注意:用json类型的话

  • 1)JSON列存储的必须是JSON格式数据,否则会报错。
  • 2)JSON数据类型是没有默认值的。

JSON查询SQL语句

select * from log where data->'$.id' = 142;

查询json数组里面对象的id等于142的记录

用JSON_CONTAINS(字段,JSON_OBJECT(‘json属性’, “内容”))

 
select * from log2 where JSON_CONTAINS(data,JSON_OBJECT('id', "142"))

 

本文备用以免原文删除。

摘自:https://www.jb51.net/article/237831.htm

标签:检索,JSON,查询,json,mysql,字段
From: https://www.cnblogs.com/phpyangbo/p/16870554.html

相关文章

  • 【MySQL】基础练习题
    习题参考:https://blog.csdn.net/qq_41936662/article/details/80393172数据库准备建表语句学生表studentCREATETABLE`student`(`s_id`varchar(20)NOTNULL,......
  • 我的朋友因为 JSON.stringify 差点丢了奖金
    英文|https://medium.com/frontend-canteen/my-friend-almost-lost-his-year-end-bonus-because-of-json-stringify-9da86961eb9e翻译|杨小爱这是发生在我朋友身上的真......
  • dpkg 安装mysql
    名称版本系统Ubuntu16.04MySQL5.7.26下载安装包wgethttps://dev.mysql.com/get/Downloads/MySQL-8.mysql-server_8.0.16-2ubuntu18.04_amd64.deb-bun......
  • MySQL锁表解锁表
    CREATETABLEt1(idint(11)NOTNULL,valvarchar(10)DEFAULTNULL,PRIMARYKEY(id))ENGINE=InnoDBDEFAULTCHARSET=utf8mb4;INSERTintot1(i......
  • MySQL主从复制
    MySQL主从复制主机名称IP备注mysql-master192.168.175.93mastermysql-slave192.168.175.130slave在mysql-master上创建一个复制账号;mysql-master......
  • MySql -基础学习3 - DML语言
    数据库的意义:数据存储,数据管理DML语言,数据操作语言insert    -  插入update   -  修改delete   -  删除1.插入--插入语句--inse......
  • 6.Json交互处理
    6.Json交互处理1.什么是JsonJSON(JavaScriptObjectNotation,JS对象标记)是一种轻量级的数据交换格式,目前使用特别广泛。采用完全独立于编程语言的文本格式来存储......
  • SAP GGB1替换 发现没有替换的字段 解决
    需求替代凭证中的付款方式为默认值GGB1替代如上图所示并没有我们想到替换的zschl字段这就需要我们去维护一张配置表将这个字段放出来sm30--VWTYGB01将对应字......
  • Mysql常见错误处理(持续更新)
    ERROR1290(HY000):TheMySQLserverisrunningwiththe--skip-grant-tablesoptionsoitcannotexecutethisstatement​mysqladmin: connect to server at '......
  • mysql insert into select锁全表情况分析
    前言  Insertintoselect请慎用。这天xxx接到一个需求,需要将表A的数据迁移到表B中去做一个备份。本想通过程序先查询查出来然后批量插入。但xxx觉得这样有点慢,需要耗费......