背景
通常在数据库模糊查询的时候,可以使用like '%string%'
的方式查找,那么当有多个条件模糊查询的是,如果采用多个子查询然后union
的方式会显的比较繁琐。
这时候就需要用到正则来查询。
正则查询
例如我们需要查询Posts表中,body字段存在aa或者bb的所有信息。
在mysql中,正则查询可以通过rlike
或者regexp
两个关键字来实现:
1 | select * from posts where body rlike 'aa|bb' |
或者
1 | select * from posts where body regexp 'aa|bb' |
sqlalchemy的正则查询
如果用的是alchemy,比如新建了Post模型,那么方法如下:
1 | regpattern = 'aa|bb' |
扩展
sqlalchemy关于mysql的正则表达式说明:https://docs.sqlalchemy.org/en/13/dialects/mysql.html?highlight=regexp#mysql-sql-extensions