You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQLAlchemy中regexp_match正则匹配如何忽略大小写

有三种常用的实现方式,你可以根据你使用的数据库选择:

  • 方式一:使用正则内联忽略大小写标记(兼容绝大多数支持正则的数据库,通用性最强)
    直接在你要匹配的正则字符串前加(?i)前缀即可,代码示例:
stmt = session.query(models.Production).filter(models.Production.profile_name.regexp_match('(?i)some_name'))
results = session.execute(stmt).all()
print(results)

(?i)是正则通用的内联修饰符,标识当前正则匹配忽略大小写,不需要额外传参,也不需要调整数据库配置。

  • 方式二:传入数据库专属的忽略大小写参数
    如果你使用PostgreSQL数据库,regexp_match方法支持传入第二个参数作为匹配标记,传'i'即可实现忽略大小写:
stmt = session.query(models.Production).filter(models.Production.profile_name.regexp_match('some_name', 'i'))
results = session.execute(stmt).all()
print(results)

如果你使用MySQL 8.0+版本,可以调用regexp_like函数传入第三个标记参数实现:

from sqlalchemy import func

stmt = session.query(models.Production).filter(func.regexp_like(models.Production.profile_name, 'some_name', 'i'))
results = session.execute(stmt).all()
print(results)
  • 方式三:全小写转换后匹配(兼容性最高,适配所有数据库)
    把数据库字段和匹配规则都转成全小写后再执行正则匹配,不需要依赖数据库的正则特性支持:
from sqlalchemy import func

stmt = session.query(models.Production).filter(func.lower(models.Production.profile_name).regexp_match('some_name'))
results = session.execute(stmt).all()
print(results)

注意这个写法需要你自己保证正则匹配的内容全部是小写格式。

内容的提问来源于stack exchange,提问作者A1122

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 10:45:08