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

来源:互联网 发布:喀秋莎录屏软件范例 编辑:程序博客网 时间:2024/04/29 22:40

背景
有这样一个数据表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。

原创粉丝点击