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


  • 相关阅读:
    CSP-S2020总结
    题解-P6687 论如何玩转 Excel 表格
    题解-UVA12995 【Farey Sequence】
    题解-P4159 [SCOI2009] 【迷路】
    题解-SP2916【GSS5
    102. 二叉树的层序遍历
    力扣 160 相交链表 快慢指针 双指针
    3. 无重复字符的最长子串 滑动窗口
    最大连续1的个数 III
    B树和B+树
  • 原文地址:https://www.cnblogs.com/pangblog/p/3367592.html
Copyright © 2011-2022 走看看