mysql操作json字段实现数据过滤和查询

一.前置条件

1.数据库表准备

以下是数据库中的表和字段,其中包含了很多json字段表名为:t_erecord_device_ext

 其中produce_info字段存储数据结构如下所示

实际数据如下所示

下面的需求都是需要基于这张表 操作json字段实现数据过滤和查询

二.mysql根据json数据过滤

1.需求:筛选produce_info字段中、brand不为空和不为null的数据

sql实现如下:

SELECT
	*
FROM
	view_device_info 
WHERE
	produce_info ->> '$.brand' != '' 
	AND produce_info ->> '$.brand' != 'null' 

查询结果如下:

三.mysql去除json字段brand查询出来的双引号,并且根据brand分组、查询brand同类型的device_id并使用逗号拼接,过滤空值和null值

sql实现如下:

SELECT
	json_unquote(json_extract( produce_info, '$.brand' )) AS brand,
	group_concat( device_id ) AS deviceIds 
FROM
	view_device_info 
WHERE
	STATUS = 0 
	AND produce_info ->> '$.brand' != '' 
	AND produce_info ->> '$.brand' != 'null' 
	AND owner_id = 'AHHF_QHHFY_20180408' 
GROUP BY
	brand

查询结果如下:

 sql解释如下:

json_unquote:去除json中的双引号
json_extract:解析json
group_concat:合并聚合后的需要拼接的字段

猜你喜欢

转载自blog.csdn.net/qq_45443475/article/details/129307283