mysql从json字段中取出指定字段

需求: mysql 从一个json字段,例如其中的值为{“goodsId”:“331”,“shareKey”:“MTg5czk2MTE=”,“channelId”:“11”},取出goodsId,shareKey,channelId 的sql

从json字段中取出指定字段

可以使用以下的SQL语句来从一个JSON字段中取出goodsId、shareKey和channelId:

SELECT JSON_EXTRACT(json_field, ‘$.goodsId’) as goodsId,
JSON_EXTRACT(json_field, ‘$.shareKey’) as shareKey,
JSON_EXTRACT(json_field, ‘$.channelId’) as channelId
FROM mytable;

其中,json_field表示包含JSON数据的字段,mytable则是包含该字段的表名。

使用JSON_EXTRACT函数,可以从JSON字段中提取特定的值。第二个参数指定要提取的值的路径。语法为:$.key,其中key是想要提取的值的键名。

以上SQL语句将返回一个包含三个字段(goodsId、shareKey、channelId)的结果集,每个字段都包含提取出来的值。

去除双引号

如果JSON字段值包含双引号,并且不希望在查询结果中返回双引号,则可以使用MySQL中的函数JSON_UNQUOTE函数来去掉双引号。

以下是相应的SQL语句示例:

SELECT JSON_UNQUOTE(JSON_EXTRACT(json_field, ‘$.goodsId’)) as goodsId,
JSON_UNQUOTE(JSON_EXTRACT(json_field, ‘$.shareKey’)) as shareKey,
JSON_UNQUOTE(JSON_EXTRACT(json_field, ‘$.channelId’)) as channelId
FROM mytable;

该语句中,使用了JSON_EXTRACT函数来提取JSON数据中的值,并将其作为参数传递给JSON_UNQUOTE函数,以去掉它们周围的双引号。最后,将结果作为新的列别名返回。

这样,即使JSON字段值包含双引号,查询结果也不会包含双引号。

注意: mysql版本低于5.7,则不支持上述函数

posted @ 2023-04-17 15:22  进击的小蔡鸟  阅读(2306)  评论(0编辑  收藏  举报