我有一个艺术家名单,专辑和曲目,我想用他们各自名字的第一个字母排序。当我想忽略“The”、“A”、“An”和其他各种非字母数字字符时,问题就出现了(与您“Weird Al”Yankovic和[dialog])。德詹开局不错?|但是我想忽略这些和我选择的其他几个。在
我在Django中使用带有utf8_bin排序规则的MySQL数据库执行此操作。在
编辑
好吧,我的错是没有提到这一点,但是我正在访问的数据库已经准备好了。它是由Amarok创建和维护的,如果没有一大堆问题,我无法更改它。也就是说,artist表的The Chemical Brothers
列为The Chemical Brothers
,所以我想我被困在这里了。这可能会很慢,但这不是我太担心,因为这是一个个人项目。在
在PostgreSQL中,我发现这是一个很好的开始这种排序的方法:
我猜MySQL也有类似的beasties。在
你所要求的可能不是你所需要的。你可能不想只按第一个字母排序。如果艺术家第一次按字母排序的话,你也会按同样的字母排序。在
更新答案
你说过不允许你更改数据库。然后,您可以使用^{} 来删除不感兴趣的单词,但请注意,这会很慢,因为查询将无法对列使用索引。在
结果:
^{pr2}$试验数据:
原始答案
还要注意,如果您
ORDER BY
一个列的函数,当您有很多记录时,它将非常慢,因为该列上的索引无法使用。相反,您应该存储另一列,在其中删除所有不感兴趣的单词(the、an等…)并按该列排序。或者,当您在应用程序中插入一行时,您可以使用触发器从数据库中插入该行。在相关问题 更多 >
编程相关推荐