当前位置:Gxlcms > mysql > SqlServer按照指定顺序对字段进行排序

SqlServer按照指定顺序对字段进行排序

时间:2021-07-01 10:21:17 帮助过:48人阅读

最近的一个项目,使用存储过程对报表进行分析,其中有一些名称需要根据指定顺序显示,而其名称对应的编号并不是按照要求的顺序排列的。通过上网查找资料,发现sql 中的charindex函数可以帮助解决这个问题。但是这样做也有一个弊端,当添加新的名称后,可能就

最近的一个项目,使用存储过程对报表进行分析,其中有一些名称需要根据指定顺序显示,而其名称对应的编号并不是按照要求的顺序排列的。通过上网查找资料,发现sql 中的charindex函数可以帮助解决这个问题。但是这样做也有一个弊端,当添加新的名称后,可能就会达不到想要的结果了,没有通用性。

给出一个例子:

create table test(
id1 varchar(10),
id2 varchar(10),
name varchar(20)
);
insert into test values('100','1001','
ccc');
insert into test values('100','1002','
bbb');
insert into test values('100','1003','
aaa');
insert into test values('101','1010','
fff');
insert into test values('101','1011','
ddd');
insert into test values('101','1012','eee');

查询语句:

select * from dbo.test order by id1 ,CHARINDEX(id2,'1011,1012,1010,1003,1002,1001,');

查询结果如图所示

附 charindex函数说明截自百度百科):

语法

CHARINDEX ( expression1 , expression2 , [ start_location ] )

参数

expression1

一个表达式,其中包含要寻找的字符的次序。expression1 是一个短字符数据类型分类的表达式。

expression2

一个表达式,通常是一个用于搜索指定序列的列。expression2 属于字符串数据类型分类。

start_location

expression2 中搜索 expression1 时的起始字符位置。如果没有给定 start_location,而是一个负数或零,则将从expression2 的起始位置开始搜索。

返回类型

int

人气教程排行