前言
有时候使用MySQL进行数据库查询数据的时候,like查询存在局限性,这时候就可以使用MySQL中的正则表达式查询的方式。
正则表达式本身这里不做介绍。
MySQL中不能同时使用like in关键字
like 模糊查询关键字
in 多条件查询关键字
like in 理论上实现的是就是多条件查询,但是Mysql的语法并不支持该实现,因此有些需求想要实现like in 的效果,只能通过大量子查询实现 ,而且实现的效果功能非常不智能。
LIKE和REGEXP的区别
LIKE匹配整个列(like是模糊查询),如果被匹配的文本仅在列值中出现,LIKE并不会找到它,相应的行也不会返回(当然,使用通配符除外)
REGEXP在列值内进行匹配,如果被匹配的匹配的文本在列值中出现,REGEXP将会找到它,相应的行将被返回,这时一个非常重要的差别(当然,如果适应定位符号^和$,可以实现REGEXP匹配整个列而不是列的子集)
可以认为like是REGEXP的一种极简单应用。
1 | SELECT * from kitty_tablename where name like '钻井工艺'; -- name 值是 ‘钻井工艺’ |
QueryWrapper实现REGEXP
查询条件:
name中包含“bunny”或者“kitty”或者“hehe”
或者head中包含“bunny”或者“kitty”或者“hehe”
1 | String contents_new = "bunny|kitty|hehe"; |