SQL 字符串排序问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL 字符串排序问题相关的知识,希望对你有一定的参考价值。
4000-1,4000-10,4000-11,4000-2,40000-4,D-1335-1,D-2750,D-3085,D-3102,D-3127,D3153-1,D-3315-3,M-3153-1,M-3153-2,M-3171,M-3202-1,M-3301-3,M-3315-3
转换成数字来排序,如果数据中有字母或者- 则去掉。
排成:
D-1335-1,D-2750,D-3085,D-3102,D-3127,D3153-1,M-3153-1,M-3153-2,M-3171,M-3202-1,M-3301-3,D-3315-3,M-3315-3,4000-1,4000-2,4000-10,4000-11,40000-4
如果你是在代码中来处理,那就简单,比如放到C++中来处理,
那就是对字符串的处理了,有强大的string类,如果用MFC,那就有更强大的CString类。
比如去掉字母和特殊符号都很快速,也能方便转为数字,然后来排序。 参考技术B 要创建一个自定义函数,语句:
create function [dbo].[F_GetChar] ( @No varchar(100) )
RETURNS varchar(100)
AS
BEGIN
WHILE PATINDEX('%[^A-Za-z]%',@No)>0
BEGIN SET @No=STUFF(@No,PATINDEX('%[^A-Za-z]%',@No),1,'') --删掉一个非数字的字符,循环结束,剩余的为数字部分
END
RETURN CONVERT(varchar(100),@No)
END
使用语句:select * from 表名 order by dbo.F_GetChar(列名)本回答被提问者和网友采纳 参考技术C select s from Strsorder by Convert(int,left(s,charindex('.',s+'.')-1)) asc, s asc 参考技术D 假设数据在表t_table 里字段为 t_s
select * from t_table t orer by substr(t.t_s,3)
以上是关于SQL 字符串排序问题的主要内容,如果未能解决你的问题,请参考以下文章