BLOG文档结构图
在上一篇中 http://blog.itpub.net/26736162/viewspace-1652985/ , 我们主要分析了一些 单表查询 的时候需要注意的内容,今天第二章也很简单,主要是关于排序方面的内容,以下贴出第二章的内容:
第 2 章 给查询结果排序
2.1 以指定的次序返回查询结果
2.2 按多个字段排序
2.3 按子串排序
2.4 TRANSLATE
2.5 按数字和字母混合字符串中的字母排序
2.6 处理排序空值
2.7 根据条件取不同列中的值来排序
排序基本上没有什么可以讲的,不过书中着重介绍了下 translate 的用法。
一.1 translate 用法
语法: TRANSLATE(char, from, to)
用法:
1. 返回将出现在 from 中的每个字符替换为 to 中的相应字符以后的字符串。
2. 若 from 比 to 字符串长,那么在 from 中比 to 中多出的字符将会被删除,或者认为 from 中多出的字符在 to 中与空对应
3. 三个参数中有一个是空,返回值也将是空值。
09:43:50 SQL> select translate(‘abcdefga‘,‘abc‘,‘wo‘) from dual;
TRANSLA
-------
wodefgw
Elapsed: 0.14
09:43:57 SQL> select translate(‘abcdefga‘,‘abc‘,‘‘) from dual;
T
-
Elapsed: 0.00
SELECT translate ( ‘ab 你好 bcadefg‘ , ‘abcdefg‘ , ‘1234567‘ ), translate ( ‘ab 你好 bcadefg‘ , ‘1abcdefg‘ , ‘1‘ ) FROM dual ;
一.2 按数字和字母混合字符串中的字母排序,采用 translate 函数来实现
09:52:01 SQL> create or replace view v as select empno || ‘ ‘||ename as data from scott.emp;
View created.
Elapsed: 0.54
09:52:07 SQL> select * from V
09:52:15 2 ;
DATA
---------------------------------------------------
9000 lastwiner
9001 lastwiner
7369 SMITH
7499 ALLEN
7521 WARD
7566 JONES
7654 MARTIN
7698 BLAKE
7782 CLARK
7788 SCOTT
7839 KING
7844 TURNER
7876 ADAMS
7900 JAMES
7902 FORD
7934 MILLER
16 rows selected.
Elapsed: 0.20
09:55:07 SQL> select data,translate(data,‘- 0123456789‘,‘-‘) from V order by 2;
DATA TRANSLATE(DATA,‘-0123456789‘,‘-‘)
--------------------------------------------------- ------------------------------------------------------------------------------------------------------
7876 ADAMS A DAMS
7499 ALLEN A LLEN
7698 BLAKE B LAKE
7782 CLARK C LARK
7902 FORD F ORD
7900 JAMES J AMES
7566 JONES J ONES
7839 KING K ING
7654 MARTIN M ARTIN
7934 MILLER M ILLER
7788 SCOTT S COTT
7369 SMITH &nb
查看更多关于【书评:Oracle查询优化改写】第二章的详细内容...