【发布时间】:2016-09-30 17:37:02
【问题描述】:
当我传递正则表达式时,我了解如何通过 Django ORM 进行 Postgresql 正则表达式搜索。当正则表达式在数据库表中时,等价于什么,而我正在传递字符串?
例如,以下 Postgresql 和 Django ORM 查询是等效的:
INSERT INTO StringValues (val) VALUES ('abc');
SELECT * FROM StringValues WHERE val ~* '^[a-z]{3}$';
# is the same as
StringValues.objects.filter(val__regex=r'^[a-z]{3}$')
你将如何在 Django 中执行以下查询?
INSERT INTO StringValues (val) VALUES ('^[a-z]{3}$');
SELECT * FROM StringValues WHERE 'abc' ~* val;
I.E.正则表达式在表中,我想要与我的字符串匹配的行。
在我的具体情况下,性能不是问题 - 可能会有不到 100 行进行比较 - 但是如果每个正则表达式的编译都是一个非常糟糕的主意,那么在性能方面的 cmets 也很受欢迎。
【问题讨论】:
-
我相信你正在寻找这个解决方案:stackoverflow.com/a/31689831/1971587
-
完全正确 - 抱歉,我忘记在下面将我的答案标记为已接受的答案。
标签: regex django postgresql