SQL 依据子串排序

SQL 依据子串排序,你想按照一个字符串的特定部分排列查询结果。例如,你希望从 EMP 表检索员工的名字和职位,并且按照职位字段的最后两个字符对检索结果进行排序。结果集应该像下面这样。

SQL 依据子串排序 问题

你想按照一个字符串的特定部分排列查询结果。例如,你希望从 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

SQL 依据子串排序 解决方案

DB2MySQLOraclePostgreSQL

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)

SQL 依据子串排序 扩展知识

利用数据库中的子串函数,你可以很方便地按照一个字符串的任意部分来排序。要想按照一个字符串的最后两个字符排序,需要先找到该字符串的结尾处(即字符串的长度),然后减去 2。这样,起始位置就是该字符串的倒数第 2 个字符。然后,你就可以截取从指定起始位置开始直到字符串结束的所有字符。SQL ServerSUBSTRING 函数略有不同,它要求提供第 3 个参数来指定需要截取几个字符。对于本实例而言,第 3 个参数既可以是 2,也可以是任何大于 2 的数字。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程