首页新闻找找看学习计划

sql如何让字符串的数字按照int类型的来排序

0
悬赏园豆:50 [已解决问题] 解决于 2019-11-25 08:54

SQL排序,字段值里面既有数字,也有字母,还有数字字母组合,例如 A-1-1,A-1-11,A-1-2

要实现 A-1-1,A-1-2,A-1-11这样的排序,如何解决,直接排序都是 A-1-1,A-1-11,A-1-2这样子的排法。

问题补充:

反正就是字母的按照字母排,数字的按照数字来排

腐乳的主页 腐乳 | 初学一级 | 园豆:25
提问于:2013-08-01 17:27
< >
分享
最佳答案
0

自己写个 PARSE(SQL 2012 的系统函数里有) 函数。

SELECT PARSE('A-1-1') AS F1 FROM T ORDER BY F1

PARSE的转换,可以根据你的需求设置为列的一种:

1, 把 'A-1-1'形式转换为 'A-01-01',把数字按等宽补齐 0 ,补齐多少位,视你的实际需求设置。

收获园豆:50
Launcher | 高人七级 |园豆:45040 | 2013-08-01 18:00
其他回答(5)
0

直接order by 列名 就可以的,

字符串的排序,是先比较第一位,然后第二位,然后第三位的......

只会造轮子 | 园豆:2274 (老鸟四级) | 2013-08-01 17:30

这个不行的会变成A-1-1,A-1-11,A-1-2这种排法的

支持(1) 反对(0) 腐乳 | 园豆:25 (初学一级) | 2013-08-01 17:31

@腐乳: 你的字符格式都是一样的么  X-X-X 这个格式.?

如果是这样的话,你可以先截取三个X位置的数据出来,然后再转换成数据,然后再排序试试.

支持(0) 反对(0) 只会造轮子 | 园豆:2274 (老鸟四级) | 2013-08-01 17:33

@发粪图墙: 不一样

有可能都是字母,有可能都是数字,还有混合,有可能是X,有可能是X-X,很变态

支持(0) 反对(0) 腐乳 | 园豆:25 (初学一级) | 2013-08-01 17:35

@腐乳: 我给你一些数据参考吧,W52-15-9,WFS-a-b,wq1-1,wq1-2,wq2,wq2-9-9,VW2-A-2,s00-1-1

支持(0) 反对(0) 腐乳 | 园豆:25 (初学一级) | 2013-08-01 17:37

@腐乳: 那你的后两个都是数字.?是否只用后面两个做排序就可以了呢.?

还是说前面的也要做排序呢.?

支持(0) 反对(0) 只会造轮子 | 园豆:2274 (老鸟四级) | 2013-08-01 17:39

@发粪图墙: 不一定是数字的,都要排序,反正就是字母的按照字母排,数字的按照数字来排

支持(0) 反对(0) 腐乳 | 园豆:25 (初学一级) | 2013-08-01 17:39

@腐乳: 那字母加数字的怎么处理呢.?像wq2-9-9,VW2-A-2两个哪个在前哪个在后呢.?

支持(0) 反对(0) 只会造轮子 | 园豆:2274 (老鸟四级) | 2013-08-01 17:45

@发粪图墙: 每个字符串如果都是数字,先按数字来,有字母,按字母先,再按数字

这个的话VW2-A-2, wq2-9-9

支持(0) 反对(0) 腐乳 | 园豆:25 (初学一级) | 2013-08-01 17:49

@腐乳: 先按-切分成三列,然后再把三列先按字符长度排列,然后再按大小排列,

order by len(col1),len(col2),len(col3),col1,col2,col3

支持(0) 反对(0) 只会造轮子 | 园豆:2274 (老鸟四级) | 2013-08-01 18:32
0

首先要先确定你的数据格式!你的样例数据太少,无法知道你所有的数据格式。

如果都是字母-数字-数字,可以新存储为3个字段,然后用order by排序;

幻天芒 | 园豆:36594 (高人七级) | 2013-08-02 13:08
0

 Launcher  的回复可以解决楼主的问题.字符排序,只要格式一致,可以达到int的效果。

邢少 | 园豆:10922 (专家六级) | 2013-08-03 10:04
0

是不是有规律的字符串 ? 是,试试:

A-1-1  =>A-1-01

A-1-2  =>A-1-02

A-1-11 =>A-1-11  

再排序

Shannon | 园豆:601 (小虾三级) | 2014-03-04 18:52
-2

照上面学下,入门是没有问题的了。以后的路就得靠你自己了。

季扎 | 园豆:204 (菜鸟二级) | 2014-03-31 01:58
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册