首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自然或人类排序

自然或人类排序
EN

Stack Overflow用户
提问于 2017-09-12 16:00:24
回答 5查看 2.2K关注 0票数 1

我已经做了好几个月了。我只是无法得到natural (真α-数字)结果。我感到震惊的是,我不能得到他们,因为我能够从1992年以来在RPGEBCDIC

我正在寻找任何解决方案,在SQL,VBS或简单的excel或access。以下是我掌握的数据:

代码语言:javascript
复制
299-8, 
3410L-87, 
3410L-88, 
420-A20, 
420-A21, 
420A-40, 
4357-3, 
AN3H10A, 
K117GM-8, 
K129-1, 
K129-15, 
K271B-200L, 
K271B-38L, 
K271D-200EL, 
KD1051, 
KD1062, 
KD1092, 
KD1108, 
KD1108, 
M8000-3, 
MS24665-1, 
SK271B-200L, 
SAYA4008

我寻找的顺序是真正的alpha-数字顺序,如下所示:

代码语言:javascript
复制
AN3H10A, 
KD1051, 
KD1062, 
KD1092, 
KD1108, 
KD1108, 
K117GM-8, 
K129-1, 
K129-15, 
MS24665-1,
M8000-3, 
SAYA4008, 
SK271B-200L

库存是7800条记录,所以我在处理能力方面也有一些问题。

任何帮助都将不胜感激。

杰夫

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2017-09-12 18:04:21

在本机Excel中,可以添加多个排序列以返回每个字符的ASCII代码,但如果该字符是数字,则向代码中添加一个大数字(例如1000)。

然后对每个助手列进行排序,包括表中的第一个列,而不是排序。

公式:

代码语言:javascript
复制
=IFERROR(CODE(MID($A1,COLUMNS($A:A),1))+AND(CODE(MID($A1,COLUMNS($A:A),1))>=48,CODE(MID($A1,COLUMNS($A:A),1))<=57)*1000,"")

排序对话框:

结果:

您可以使用VBA实现类似的算法,也可以使用SQL实现。我不知道VBS或Access的事。

票数 2
EN

Stack Overflow用户

发布于 2017-09-12 16:09:23

您可以尝试使用格式对左填充字符串按顺序

代码语言:javascript
复制
select column
from my_table 
order by  Format(column, "0000000000")
票数 0
EN

Stack Overflow用户

发布于 2017-09-12 16:53:16

添加排序列:

代码语言:javascript
复制
, iif (left(fieldname, 1) between '0' and '9', 1, 0) sortField
etc
order by sortField, FieldName
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46180955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档