在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"
上。
有人可以告诉我一种按预期顺序排序的解决方案吗(如上所述)?
答案 0 :(得分:1)
之所以会这样,是因为Val(".")
和Val("0")
都返回0,所以您的ORDER BY
无法区分[TargetDays]
字段中的这两个字符...并且没有知道应该在“ 0” 之前对“。” 进行排序的方式。
您可以包括基于ASCII值的辅助排序,以告诉您所需的内容。 Asc()
函数在运行中的即时窗口示例...
? Asc("."), Asc("0")
46 48
您可以基于该函数进行辅助排序...
ORDER BY val(TargetDays), Asc(TargetDays)
但是,我认为您实际上不需要包含该函数,因为这应该给您相同的结果...
ORDER BY val(TargetDays), TargetDays