我在PostgreSQL数据库中使用Django,这个查询工作得很好:
REQUEST_TYPE_ENTRANCE = 1
REGEX_ENTRANCE = r'^{0},|,{0},|,{0}$|^{0}$'.format(
REQUEST_TYPE_ENTRANCE
)
entrance_registers = EntranceRegister.objects.filter(authorized_requests__regex=REGEX_ENTRANCE)但是,当我使用SQLite数据库运行测试时,它不会返回任何结果。
这是print EntranceRegister.objects.filter(authorized_requests__regex=REGEX_ENTRANCE).query的输出
SELECT "porter_entranceregister"."id", "porter_entranceregister"."status", "porter_entranceregister"."authorized_requests", "porter_entranceregister"."gone_at", "porter_entranceregister"."created_at"
FROM "porter_entranceregister"
WHERE "porter_entranceregister"."authorized_requests"
REGEXP ^1,|,1,|,1$|^1$ ORDER BY "porter_entranceregister"."created_at"
DESC我想问题可能在于这里缺少引号:https://github.com/django/django/blob/master/django/db/backends/sqlite3/base.py#L129,但是当我在虚拟环境中更改这个文件时,它会失败。
ProgrammingError: Incorrect number of bindings supplied. The current statement uses 6, and there are 7 supplied.发布于 2015-03-02 17:17:50
默认情况下,SQLite不实现REGEXP运算符。(如果是,则第二个操作数必须由一个字符串组成)。
你可以用类似的方法获得同样的效果:
... WHERE reqs LIKE '1,%' OR reqs LIKE '%,1,%' OR reqs LIKE '%,1' OR reqs = '1'https://stackoverflow.com/questions/28813346
复制相似问题