您的位置:首页 > 数据库

模糊匹配数据库中的json字段

2017-11-23 13:48 225 查看
背景

有这样一个数据表user,其包含一个字段extra,用于保存用户额外的信息(比如邮箱、电话、描述等)

这些信息是以json格式进行保存,比如{“email”:”wq@163.com”,”phone”:”1234567”,”descrption”:”user info”}

现在需要按照email进行模糊查询,如何写sql?

解决方法:

方法一、使用数据库自带的json_extract函数

SELECT * from USER u where json_extract(u.extra,”$.email”) like ‘%?%’

其中?处就是需要模糊匹配的内容。

json_extract(u.extra,”$.email”) 就可以得到extra字段中的email值

注意:数据库使用mysql 5.7.18 实际情况看是否支持json_extract函数

方法二、使用正则表达式

SELECT * from USER u where u.extra regexp ‘“email”: “[^”]?[^”]’

因为我们要匹配“email”:”wq@163.com” 这块内容,不能匹配后面的部分。

[^”]*表示0个或多个字符,意思就是匹配的内容前后可以包含任意个字符,只要没有“就OK。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据库 json