【问题标题】:Use Django ORM Postgresql regex when the regex is in the database and the value is a string当正则表达式在数据库中并且值为字符串时,使用 Django ORM Postgresql 正则表达式
【发布时间】: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 也很受欢迎。

【问题讨论】:

标签: regex django postgresql


【解决方案1】:
StringValues.objects.extra(where=["'abc' ~ val"])

【讨论】:

    猜你喜欢
    • 2012-02-26
    • 1970-01-01
    • 2022-01-25
    • 2017-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-08
    相关资源
    最近更新 更多