zoukankan      html  css  js  c++  java
  • SqlServer按照指定顺序对字段进行排序

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


  • 相关阅读:
    webService入门理解
    spring 事物的一些理解
    代码规范
    Linux安装SSH服务
    java == 与 equals 相同与不同点
    ubuntu安装mysql
    SQL夯实基础(一):inner join、outer join和cross join的区别
    C#进阶之路(二):事件
    C#进阶之路(一):委托
    快速排序 Quick Sort
  • 原文地址:https://www.cnblogs.com/pangblog/p/3367592.html
Copyright © 2011-2022 走看看