我了解在传递正则表达式时如何通过 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;
IE。正则表达式在表中,我想要与我的字符串匹配的行。
在我的特定情况下,性能不是问题 - 可能有不到 100 行要比较 - 但如果每个正则表达式的编译都是一个非常糟糕的主意,也欢迎对性能的评论表示感谢。
最佳答案
StringValues.objects.extra(where=["'abc' ~ val"])