MySQL对JSON数据进行查询

文章介绍了如何在MySQL5.7及以上版本中利用JSON字段进行数据检索,包括使用`json_extract`函数和`JSON_CONTAINS`进行精确查询,以及在Mybatis框架中的应用。强调了JSON类型的使用注意事项,如JSON列必须存储合法JSON格式数据,且没有默认值。还提到了`->`和`->>`的区别,前者返回带引号的值,后者返回不带引号的值。
摘要由CSDN通过智能技术生成

MySQL根据JSON字段的内容检索查询数据

  1. 使用 字段 -> ‘$.json’ 属性’ 进行查询条件

    以下这两种会快很多,可以自己测试

  2. 使用 json_extract 函数查询,json_extract(字段, “$.json属性”)

  3. 根据json数组查询,用 JSON_CONTAINS (字段, JSON_OBJECT(‘json属性’, “内容”))

在这里插入图片描述

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

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

举个栗子

1、首先我们看到数据表中,Form_Value_一列是josn格式存在的,又想通过其中的一组或者几组键值对来进行查询。
在这里插入图片描述

2、通过以下语句就可以通过key,value来进行查询了,如果多个条件,正常加 and 就可以了。

**注意:**like 查询varchar类型时要将单箭头变为双箭头直接匹配值模糊查询 ->>

SELECT * FROM vx_live_room where info ->> 'name' like '%测试%'

在这里插入图片描述

SELECT * FROM core_process where Form_Value_ -> '$.attendancer' = '马立新'

在这里插入图片描述
3、如果是Mybatis框架,要把 > 符号转义,像这样用 <![CDATA[ ]]>

<![CDATA[   Form_Value_ -> '$.endDate' < #{endDate,jdbcType=VARCHAR}    ]]>

扩充:

查询jaon串,返回json串里的某个字段
在这里插入图片描述

2.结果字段为json串

在这里插入图片描述

3.取json串中某个key的value值

在这里插入图片描述

4.->和->>区别,如图

-> 结果值带双引号"值"

在这里插入图片描述
->> 结果值不带引号

在这里插入图片描述
null依旧是null,不管符号是->还是->>

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值