首頁 > 資料庫 > mysql教程 > SqlServer按照指定顺序对字段进行排序

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

WBOY
發布: 2016-06-07 15:17:35
原創
1826 人瀏覽過

最近的一个项目,使用存储过程对报表进行分析,其中有一些名称需要根据指定顺序显示,而其名称对应的编号并不是按照要求的顺序排列的。通过上网查找资料,发现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,');

查询结果如图所示

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

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

语法

CHARINDEX ( expression1 , expression2 , [ start_location ] )

参数

expression1

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

expression2

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

start_location

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

返回类型

int



相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板