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,则不支持上述函数