首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django:查询中的Sqlite和regex

Django:查询中的Sqlite和regex
EN

Stack Overflow用户
提问于 2015-03-02 15:24:01
回答 1查看 600关注 0票数 2

我在PostgreSQL数据库中使用Django,这个查询工作得很好:

代码语言:javascript
复制
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的输出

代码语言:javascript
复制
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,但是当我在虚拟环境中更改这个文件时,它会失败。

代码语言:javascript
复制
ProgrammingError: Incorrect number of bindings supplied. The current statement uses 6, and there are 7 supplied.
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-02 17:17:50

默认情况下,SQLite不实现REGEXP运算符。(如果是,则第二个操作数必须由一个字符串组成)。

你可以用类似的方法获得同样的效果:

代码语言:javascript
复制
... WHERE reqs LIKE '1,%' OR reqs LIKE '%,1,%' OR reqs LIKE '%,1' OR reqs = '1'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28813346

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档