Oracle 11g学习笔记–高级查询
说明:本文总结自《Oracle Database 11g SQL 开发指南》 Jason Price著
集合操作符
集合操作符可以将两个或者多个查询返回的行组合起来
操作符 | 说明 |
union all | 返回各个查询检索出的所有行 |
union | 返回各个检索查询出的所有行,不包括重复行 |
intersect | 返回两个查询检索出的共有行 |
minus | 返回将第二个查询检索出的行从第一个查询检索出的行中减去之后剩余的行 |
使用方法:
select ..... from table_1 union all select ....from table_2;
--必须保证具有相同的结果列
translate函数
translate(x, from_string, to_string)函数在x中查找from_string中的字符,并将其转换成to_string中对应的字符。
select translate('ab123', 'abcdefg123', '3456789abc') from dual;
鼠标放上来,查看结果
从结果可以看出,from_string和to_string中的字符是一一对应的,然后根据这种对应关系,将原字符串进行转换;
注意:两个字符串的长度可以不一致,若前者比后者长,那么后者会以空补齐,此处的空就是没有任何东西,若前者比后者短,那么后者多出的部分会自动忽略;
decode()函数
decode(value, search_value, result, default_value)对 value与search_value进行比较,若相等,则返回result,否则返回default_value.
select decode(1, 1, 3, 4) from dual;
case表达式
case表达式可在SQL语句中实现if-then-elsse型的逻辑,它的作用与decode类似,但是我们应该使用case,因为它与ANSI兼容,而且更容易读;
select
case ROWNUM-1
when 1 then 'A'
when 2 then