SQL 按照子字符串排序,你想根据一个子字符串对结果集进行排序,考虑下面的记录。
SQL 按照子字符串排序 问题描述
你想根据一个子字符串对结果集进行排序,考虑下面的记录。
ENAME
----------
SMITH
ALLEN
WARD
JONES
MARTIN
BLAKE
CLARK
SCOTT
KING
TURNER
ADAMS
JAMES
FORD
MILLER
你希望按照每个名字的最后两个字符对上述记录进行排序。
ENAME
---------
ALLEN
TURNER
MILLER
JONES
JAMES
MARTIN
BLAKE
ADAMS
KING
WARD
FORD
CLARK
SMITH
SCOTT
SQL 按照子字符串排序 解决方案
解决这个问题的关键在于使用数据库管理系统的内置函数提取出用作排序标准的子字符串,通常使用 SUBSTR
函数来实现这一点。
DB2、Oracle、MySQL 和 PostgreSQL
使用内置函数 LENGTH
和 SUBSTR
,根据字符串的特定部分排序。
1 select ename
2 from emp
3 order by substr(ename,length(ename)-1,2)
SQL Server
使用 SUBSTRING
函数和 LEN
函数,根据子字符串的特定部分排序。
1 select ename
2 from emp
3 order by substring(ename,len(ename)-1,2)
SQL 按照子字符串排序 扩展知识
通过在 ORDER BY
子句里使用 SUBSTR
表达式,我们可以选择一个字符串的任意部分用于结果集的排序。其实,也可以不使用 SUBSTR
函数,我们可以基于任何表达式对结果集排序。