不区分大小写的数组查询Flask-SQLAlchemy

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了不区分大小写的数组查询Flask-SQLAlchemy相关的知识,希望对你有一定的参考价值。

我在Postgres表中有一个文本数组列,其中包含用户的电子邮件和alt电子邮件地址。

我正在使用Flask和SQLAlchemy,我想在数据库中查询用户输入的电子邮件包含在数组中的行。目前我正在使用.contains

Users.query.filter(Users.emails.contains({email})).first()

我遇到的问题是,一些现有的电子邮件地址混合了大写和小写,但我似乎无法找到一种降低数组或查询不区分大小写的方法。

我看过func.lower但是这不想和Arrays很好地玩,另一种选择是.ilike然而我似乎无法让它工作,我的桌子大约有10,000行和.ilike我不喜欢认为最有效率?

做这个的最好方式是什么?

答案

我最终只使用原始SQL,这就是诀窍。

db.engine.execute("SELECT * FROM Users WHERE '%s' = ANY(lower(emails::text)::text[])" % email)

以上是关于不区分大小写的数组查询Flask-SQLAlchemy的主要内容,如果未能解决你的问题,请参考以下文章

mongoose 查询 $in 不区分大小写的正则表达式不起作用

HQLhibernate查询语言hql

Oracle 如可控制查询不区分大小写?

mysql模糊查询区分大小写的问题~~

mysql模糊查询区分大小写

SQL语句中模糊查询中不区分大小写怎么写?如:select × from table where number like‘%PK%’