Django查询如何写:WHERE字段LIKE'10__8__0__'?

Vit*_*mar 12 django django-models

包含方法,但它的意思是:WHERE field LIKE '%10%'.而且我确切地需要WHERE field LIKE '10__8__0__'.

谢谢!

编辑:

我的意思是字符串是'10xx8xx0xx',其中x - 任何符号

Goi*_*oin 15

你可以用django-like做到这一点:

MyModel.objects.filter(field__like='10%8%0%')
Run Code Online (Sandbox Code Playgroud)

我还在Django项目网站上创建了相关的票证


tba*_*ack 5

执行搜索的最简单方法是使用正则表达式:

MyModel.objects.filter(field__regex=r'^10..8..0..$')
Run Code Online (Sandbox Code Playgroud)

编辑:

我的解决方案可能比LIKE慢得多.但问题是django ORM不允许轻松访问LIKE.如果startswithendswith足够您的目的,这是最简单的.

  • +1首先尝试正则表达式.如果结果太慢,那么你可以使用[`extra()`](https://docs.djangoproject.com/en/dev/ref/models/querysets/#extra) (2认同)

Jim*_*thy 5

你可以extra这样做:

MyModel.objects.extra(where=["column_name LIKE '%10%"])
Run Code Online (Sandbox Code Playgroud)

请注意,这column_name是数据库中的列名,而不是Django模型中的字段名.在许多情况下,字段名称和列名称将相同,但如果它们不同,请注意使用列名称.