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,则不支持上述函数
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!