模糊匹配数据库中的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。
有这样一个数据表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。
相关文章推荐
- 当只有一个输入条件的时匹配数据库表中多个字段模糊查询的SQL语句
- 数据库的字段不够用的时候,可以将数据存为json格式
- 数据库禁止模糊匹配的情况下实现模糊匹配以及分页展示
- 利用SQL模糊匹配来验证字段是否是日期格式
- cxLookupCombobox的多字段模糊匹配
- mybatis中模糊查询时一个字段匹配不定量数据解决方法
- 在当前账户下模糊查询是否有匹配的表以及定位字段是否存在、在哪个表中
- 数据库的字段不够用的时候,可以将数据存为json格式
- jsp实现的数据库模糊搜索(可以自己设定匹配字符个数)
- easyui-combobox---ajax获取数据库JSON数据,实现搜索框实时显示模糊搜索结果
- mysql上利用通配符模糊匹配数据库进行grant
- 关于SqlServer多表根据字段值模糊匹配来连接查询的解决方法
- 数据库json字段拆分成新字段
- thinkphp中的多字段模糊匹配
- 多字段模糊匹配关键字查询
- 触发器及存储过程 同时增删模糊匹配字段
- 数据库查询的模糊匹配
- ThinkPHP多字段匹配模糊查询
- 【ZT】SQL实现多字段模糊匹配关键字查询
- Mybatis多个字段模糊匹配同一个值