Сортировка SQLite для буквенно-цифрового списка varchar - PullRequest
0 голосов
/ 05 сентября 2018

Я пишу музыкальную программу с SQLite в качестве бэк-энда и пытаюсь разобраться, как отсортировать все альбомы в том порядке, в котором они мне нужны. Теоретически это довольно просто, но есть одна странная проблема, с которой у меня возникают проблемы, как показано ниже.

Возьмите эти три альбома - как их отсортировать в указанном порядке при использовании альбома SELECT DISTINCT FROM из альбома ORDER BY Album COLLATE NOCASE:

Вот что я называю музыкой! 10 Вот что я называю музыкой! 99 Вот что я называю музыкой! 100

В отличие от того, в чем они отсортированы:

Теперь это то, что я называю музыкой! 10 Вот что я называю музыкой! 100 Вот что я называю музыкой! 99

Я хочу, чтобы 100 следовало за 99, если это имеет смысл.

1 Ответ

0 голосов
/ 05 сентября 2018

Шон дал вам объяснение того, что вы видите, и возможность получить то, что вы хотите, написав пользовательскую функцию сортировки.

Но у вас действительно есть альбомы с такими именами, как "Теперь это то, что я называю музыкой! 10"? Я предполагаю, что «10» - это своего рода отличительный код, и в этом случае лучшим решением будет изменить схему вашей базы данных, чтобы отделить фактическое имя от отличительного кода, то есть два отдельных столбца. Таким образом, вы можете сортировать по обоим полям как ORDER BY Album_name, distinguishing code.

(При создании таблицы вы, вероятно, захотите, чтобы комбинация двух полей была уникальной, например UNIQUE (Album_name, distinguishing_code))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...