Наше приложение имеет поле CustomerNumber
. У нас есть сотни разных людей, использующих систему (каждый из них имеет свой собственный логин и собственный список CustomerNumber
). У отдельного пользователя может быть не более 100 000 клиентов. Многие из них имеют менее 100.Как сортировать и отображать смешанные списки букв и цифр, как ожидают пользователи?
Некоторые люди только помещают фактические цифры в поля своих номеров клиентов, в то время как другие используют смесь вещей. Система позволяет использовать 20 символов, которые могут быть A-Z, 0-9 или тире, и сохраняет их в VARCHAR2 (20). Перед тем, как быть сохраненным, все строчные буквы делаются в верхнем регистре.
Теперь предположим, что у нас есть простой отчет, в котором перечислены все клиенты для определенного пользователя, отсортированные по номеру клиента. например
SELECT CustomerNumber,CustomerName
FROM Customer
WHERE User = ?
ORDER BY CustomerNumber;
Это наивное решение, как и люди, которые только когда-либо использовать цифры не хотят видеть простой буквенный вид (где «10» идет перед «9»).
Я не хочу спрашивать у пользователя каких-либо лишних вопросов об их данных.
Я использую Oracle, но я думаю, было бы интересно увидеть некоторые решения для других баз данных. Укажите, в какой базе данных работает ваш ответ.
Как вы думаете, лучший способ реализовать это?
См. Также http://stackoverflow.com/questions/34518/natural-sorting-algorithm и другие вещи, помеченные как «естественные» для обсуждения и реализации ... – dmckee