zoukankan      html  css  js  c++  java
  • SQL Cookbook:二、查询结果排序(3)按子串排序

    问题

        按子串的某一部分对查询结果排序。例如,要从EMP表中返回员工名字和职位,并且按照职位字段的最后两个字符排序,结果集应如下所示:

    ENAME

    JOB

    ----------
    ---------
    KING
    PRESIDENT
    SMITH
    CLERK
    ADAMS
    CLERK
    JAMES
    CLERK
    MILLER
    CLERK
    JONES
    MANAGER
    CLARK
    MANAGER
    BLAKE
    MANAGER
    ALLEN
    SALESMAN
    MARTIN
    SALESMAN
    WARD
    SALESMAN
    TURNER
    SALESMAN
    SCOTT 
    ANALYST
    FORD 
    ANALYST

    解决方案

        DB2、MySQL、Oracle和PostgreSQL

        在ORDER BY子句中使用SUBSTR函数:

    select ename,job
    from emp
    order by substr(job,length(job)-2)

        SQL Server

        在ORDER BY子句中使用和SUBSTRING函数:

    select ename,job
    from emp
    order by substring(job,len(job)-2,2)

    讨论

        使用DBMS的子串函数,可以很容易地按字符串的一部分来排序。要按照字符串的最后两个字符来排序,首先要找到字符串的末尾,并减2。起始位置就是字符串中的倒数第2个字符。然后,获取从起始位置开始的所有字符。SQL在SUBSTRING中需要第3个参数来指定要获取的字符数。在本例中,只要这个数目大于或等于2就可以了。

    版权说明:作者:张颖希PocketZ's Blog
    出处:http://www.cnblogs.com/PocketZ
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

    本文翻译内容取自网络,纯粹是练习英文水平,如有雷同,纯属意外!有不妥之处,欢迎拍砖!

  • 相关阅读:
    sqli-labs Less29-Less31
    sqli-labs Less23-Less28a
    sqli-labs Less20-Less22
    sqli-labs Less17--Less19
    sqli-labs Less13-Less16
    为什么选择centos,而不是Dibian、Ubuntu【转】
    sublime 安装常用插件
    Linux常用命令
    在UEFI下安装windows和Ubuntu双系统目前不可行
    nginx 环境搭建(基于linux)
  • 原文地址:https://www.cnblogs.com/PocketZ/p/1721467.html
Copyright © 2011-2022 走看看