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 的数字。

SQL 实例
SQL检索所有行和列SQL 筛选行SQL 查找满足多个查询条件的行SQL 筛选列SQL 创建有意义的列名SQL 在WHERE子句中引用别名列SQL 串联多列的值SQL 在SELECT语句里使用条件逻辑SQL 限定返回行数SQL 随机返回若干行记录SQL 查找Null值SQL 把Null值转换为实际值SQL 查找匹配项SQL 以指定顺序返回查询结果SQL 多字段排序SQL 依据子串排序SQL 对含有字母和数字的列排序SQL 排序时对Null值的处理SQL 依据条件逻辑动态调整排序项SQL 叠加两个行集SQL 合并相关行SQL 确定两个表是否有相同的数据SQL 查找两个表中相同的行SQL 查找只存在于一个表中的数据SQL 从一个表检索与另一个表不相关的行SQL 新增连接查询而不影响其他连接查询SQL 识别并消除笛卡儿积SQL 组合使用连接查询与聚合函数SQL 组合使用外连接查询与聚合函数SQL 从多个表中返回缺失值SQL 在运算和比较中使用NullSQL 插入新记录SQL 判断闰年SQL 计算一年有多少天SQL 从给定日期值里提取年月日时分秒SQL 计算一个月的第一天和最后一天SQL 列出一年中所有的星期五SQL 找出当前月份的第一个和最后一个星期一SQL 插入默认值SQL 使用Null覆盖默认值SQL 复制数据到另一个表SQL 复制表定义SQL 多表插入SQL 禁止插入特定列SQL 更新记录SQL 当相关行存在时更新记录SQL 使用另一个表的数据更新记录SQL 合并记录SQL 生成日历SQL 列出一年中每个季度的开始日期和结束日期SQL 计算一个季度的开始日期和结束日期SQL 填补缺失的日期SQL 依据特定时间单位检索数据SQL 比较特定的日期要素SQL 识别重叠的日期区间SQL 定位连续的值区间SQL 计算同一组或分区的行之间的差SQL 定位连续值区间的开始值和结束值SQL 为值区间填充缺失值SQL 生成连续的数值SQL 结果集分页SQL 删除单行记录SQL 删除指定记录SQL 删除全表记录SQL 删除违反参照完整性的记录SQL 删除被其他表参照的记录SQL 删除重复记录SQL 列举字段SQL 列举模式中的表SQL 列举非索引外键SQL 列举约束SQL 跳过n行记录SQL 在外连接查询里使用OR逻辑SQL 识别互逆的记录SQL 提取最靠前的n行记录SQL 找出最大和最小的记录SQL 查询未来的行SQL 行值轮转SQL 对结果排序SQL 删除重复项SQL 查找骑士值SQL 生成简单的预测SQL 列举索引列SQL 用SQL生成SQLSQL 描述Oracle数据字典视图SQL 遍历字符串