我正在编写一个以SQLite作为后端的音乐程序,并试图弄清楚如何按我想要的顺序对所有专辑进行排序。从理论上讲,这很容易,但只有一个奇怪的问题我遇到了麻烦,如下所示。
以这三张专辑为例-如何在使用SELECT DISTINCT Album Album BY COLLATE NOCASE时按此顺序对它们进行排序:
这就是我所说的音乐!10这就是我所说的音乐!99这就是我所说的音乐
而不是对它们进行排序,它们是:
这就是我所说的音乐!10这就是我所说的音乐!100这就是我所说的音乐!99
我想要100跟99,如果这有道理的话。
发布于 2018-09-06 00:39:37
Shawn已经向您解释了您所看到的内容,并提供了通过编写自定义排序函数来获得所需内容的可能性。
但是你真的有像"Now That's I Call I!10“这样的名字的专辑吗?我猜"10“是某种区分代码,在这种情况下,更好的解决方案是重新设计数据库模式,将实际名称从区分代码中分离出来,即两个单独的列。这样您就可以像ORDER BY Album_name, distinguishing code一样同时对两个字段进行排序。
(在创建表时,您可能还希望两个字段的组合是唯一的,如UNIQUE (Album_name, distinguishing_code))
https://stackoverflow.com/questions/52179993
复制相似问题