gpt4 book ai didi

mysql - Django 2.0 - iexact 转换为 LIKE 而不是 ILIKE

转载 作者:行者123 更新时间:2023-12-05 01:43:20 24 4
gpt4 key购买 nike

我有这样一个模型:

class Article(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()

class Meta:
db_table = 'article'

然后我编写查询:

articles = Article.objects.filter(title__iexact='hello world')
print(articles.query)

输出是:

SELECT ... FROM `article` WHERE `article`.`title` LIKE hello world

您可以看到 iexact 被翻译成 LIKE。但是 django 文档说它会翻译成 ILIKE,谁错了?

顺便说一句:

  1. 我的 mysql 排序规则是 utf8_bin。

  2. mysql 在 ubuntu 上运行。

  3. 代码在 Windows 上运行。

最佳答案

文件说 here iexact 的 SQL 等效项是 ILIKE。它没有说 iexact 将在 MySQL 中转换为 ILIKE。那也是根本不可能的。 MySQL 没有ILIKELIKE 已经不区分大小写。

在我使用的 PostgreSQL 中,iexact 转换为:

SELECT ... FROM "article" WHERE UPPER("article"."title"::text) = UPPER(hello world)

MySQL中exactiexact的区别如下:

  • 文章 = Article.objects.filter(title__iexact='hello world')

... WHERE `articles`.`title` LIKE hello world

  • articles = Article.objects.filter(title__exact='hello world')

... WHERE `articles`.`title` = hello world

关于mysql - Django 2.0 - iexact 转换为 LIKE 而不是 ILIKE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49632474/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com