Nun*_*ang 3 mysql django django-models django-orm
我有一个这样的模型:
class Article(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
class Meta:
db_table = 'article'
Run Code Online (Sandbox Code Playgroud)
我写了查询:
articles = Article.objects.filter(title__iexact='hello world')
print(articles.query)
Run Code Online (Sandbox Code Playgroud)
输出是:
SELECT ... FROM `article` WHERE `article`.`title` LIKE hello world
Run Code Online (Sandbox Code Playgroud)
可以看到iexact
被翻译成了LIKE。但是 django 文档说它将转换为 ILIKE,谁错了?
顺便一提:
我的 mysql 排序规则是 utf8_bin。
mysql 在 ubuntu 上提供服务。
代码在windows上运行。
文档在这里说SQL 的等价物iexact
是ILIKE
. 它没有说iexact
将在 MySQL 中翻译为ILIKE
. 这也是根本不可能的事。MySQL 没有ILIKE
. LIKE
已经不区分大小写了。
在我使用的 PostgreSQL 中,iexact
翻译为:
SELECT ... FROM "article" WHERE UPPER("article"."title"::text) = UPPER(hello world)
Run Code Online (Sandbox Code Playgroud)
exact
和MySQL 中的区别iexact
如下:
... WHERE `articles`.`title` LIKE hello world
... WHERE `articles`.`title` = hello world
归档时间: |
|
查看次数: |
2104 次 |
最近记录: |