gpt4 book ai didi

mysql - Django/MySQL - __istartswith 不生成不区分大小写的查询

转载 作者:行者123 更新时间:2023-11-29 04:30:55 25 4
gpt4 key购买 nike

我使用通用 View ,并尝试在不区分大小写的庄园中查询我的 MySQL 数据库(utf8_bin 排序规则),以尝试找到以特定字母开头的所有歌曲标题。

view.py

def tracks_by_title(request, starts_with):
return object_list(
request,
queryset = Track.objects.filter(title__istartswith=starts_with),
template_name = 'tlkmusic_base/titles_list.html',
template_object_name = 'tracks',
paginate_by = 25,
)

和我的

urls.py

urlpatterns = patterns('tlkmusic.apps.tlkmusic_base.views',
(r'^titles/(?P<starts_with>\w)/$', tracks_by_title),
)

它根据 django 调试工具栏生成的查询是:

SELECT `tracks`.`id`, `tracks`.`url`, `tracks`.`artist`, `tracks`.`album`, `tracks`.`genre`, `tracks`.`year`, `tracks`.`title`, `tracks`.`comment`, `tracks`.`tracknumber`, `tracks`.`discnumber`, `tracks`.`bitrate`, `tracks`.`length`, `tracks`.`samplerate`, `tracks`.`filesize`, `tracks`.`createdate`, `tracks`.`modifydate` FROM `tracks` WHERE `tracks`.`title` LIKE a% LIMIT 1

特别是这一行:

WHERE `tracks`.`title` LIKE a% LIMIT 1

为什么它不区分大小写,这正是我在使用 __istartswith 时所期望的?

我在 Ubuntu 上使用 Django 1.1.1。

编辑

运行 SELECT *
从轨道
WHERE title LIKE 'a%' 标题
phpmyadmin 中的 LIMIT 0 , 30
仍然返回区分大小写的结果,更改排序规则是我想避免的,主要是因为数据库由 Amarok 维护,我不知道更改排序规则的结果。

最佳答案

MySQL 不支持 ILIKE

默认情况下,MySQL 的 LIKE 比较字符串时不区分大小写。

编辑:
感谢 OP 提供有关整理的其他信息。
当前排序规则 utf8_bin 区分大小写。
相比之下,utf8_general_ci 不区分大小写。

修改排序规则可能是最简单的。
像这样:

ALTER TABLE `mydb`.`mytable` 
MODIFY COLUMN `song_title` VARCHAR(254)
CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL;

关于mysql - Django/MySQL - __istartswith 不生成不区分大小写的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2610650/

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