Как отсортировать текстовый столбец, состоящий в основном из чисел и точки

В MS Access у меня есть поле с именем "TargetDays", в котором есть такие значения, как "0", "13", 20", "6", "1", "9", ".""2", "28".

Я хочу, чтобы они были отсортированы как

., 0, 1, 2, 6, 9, 13, 20, 28

Пробовал делать ORDER BY val(TargetDays) Но иногда это сорт ., 0, 1, 2, 6, 13, 20, 28. Но в других случаях он имеет вид 0, ., 1, 2, 6, 13, 20, 28. Проблема связана с "." and "0".

Может ли кто-нибудь подсказать мне решение для сортировки в предполагаемом порядке (как указано выше)?

1
0
33
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это происходит потому, что Val(".") и Val("0") возвращают 0, поэтому ваш ORDER BY не имеет возможности различать эти 2 символа в вашем поле [TargetDays] ... и нет способа узнать, что он должен отсортировать "." перед «0».

Вы можете включить вторичную сортировку, основанную на значениях ASCII, чтобы сообщить ей, что вы хотите. Пример окна немедленного действия функции Asc() в действии ...

? Asc("."), Asc("0")
 46            48 

Вы можете основывать свою вторичную сортировку на этой функции ...

ORDER BY val(TargetDays), Asc(TargetDays)

Однако я не думаю, что вам действительно нужно включать эту функцию, потому что это должно дать вам тот же результат ...

ORDER BY val(TargetDays), TargetDays

Большое спасибо @HansUp

sam 14.09.2018 16:41

Другие вопросы по теме