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
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

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

posted @ 2010-04-26 19:10  pocketz  阅读(664)  评论(0编辑  收藏  举报