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

时间:2011-12-27 11:29:41

标签: django django-models

包含 方法,但它意味着:WHERE field LIKE '%10%'。我需要WHERE field LIKE '10__8__0__'

谢谢!

修改

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

4 个答案:

答案 0 :(得分:15)

您可以使用django-like执行此操作:

MyModel.objects.filter(field__like='10%8%0%')

我还在Django project site

上创建了相关的故障单

答案 1 :(得分:5)

进行您打算进行搜索的最简单方法是使用正则表达式:

MyModel.objects.filter(field__regex=r'^10..8..0..$')

修改

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

答案 2 :(得分:5)

您可以使用extra执行此操作:

MyModel.objects.extra(where=["column_name LIKE '%10%"])

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

答案 3 :(得分:-1)

在SQL中,您可以像下面这样查询:

WHERE field LIKE '10??8??0??'

在Django过滤器中试试。