首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >django查询中的sql "LIKE“等效项

django查询中的sql "LIKE“等效项
EN

Stack Overflow用户
提问于 2013-08-09 14:00:05
回答 6查看 112.9K关注 0票数 141

在django中,这条SQL语句的等价物是什么?

代码语言:javascript
复制
SELECT * FROM table_name WHERE string LIKE pattern;

如何在django中实现这一点?我试过了

代码语言:javascript
复制
result = table.objects.filter( pattern in string )

但这并不管用。我如何实现这一点?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-08-09 14:00:54

使用__contains__icontains (不区分大小写):

代码语言:javascript
复制
result = table.objects.filter(string__contains='pattern')

SQL的等价物是

代码语言:javascript
复制
SELECT ... WHERE string LIKE '%pattern%';
票数 263
EN

Stack Overflow用户

发布于 2015-11-26 21:38:41

falsetru提到的包含和图标使查询类似于SELECT ... WHERE headline LIKE '%pattern%

除了它们之外,您可能还需要具有类似行为的这些命令:startswithistartswithendswithiendswith

制作

SELECT ... WHERE headline LIKE 'pattern%

SELECT ... WHERE headline LIKE '%pattern

票数 42
EN

Stack Overflow用户

发布于 2020-01-30 01:55:47

这可以使用Django's custom lookups来完成。我已经在Django-like-lookup application中进行了查找。安装它后,将启用带有%_通配符的__like查找。

应用程序中所有必需的代码是:

代码语言:javascript
复制
from django.db.models import Lookup
from django.db.models.fields import Field


@Field.register_lookup
class Like(Lookup):
    lookup_name = 'like'

    def as_sql(self, compiler, connection):
        lhs, lhs_params = self.process_lhs(compiler, connection)
        rhs, rhs_params = self.process_rhs(compiler, connection)
        params = lhs_params + rhs_params
        return '%s LIKE %s' % (lhs, rhs), params
票数 21
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18140838

复制
相关文章

相似问题

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