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

2019-11-25 08:12发布

问题:

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这样子的排法。

回答1:

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

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

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

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



回答2:

直接order by 列名 就可以的,

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



回答3:

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

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



回答4:

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



回答5:

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

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

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

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

再排序



回答6:

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