1、union --可以把两个不同的表的数据汇总到一个结果集中
select id from stud1 union select id from stud2; --这样就会把stud1和stud2 的id都列出来,当然你就可以放到list去了。会自动排序,并且合并相同的记录。
2、union all
作用跟union相同,但是不会自动排序,也不会合并相同记录。
3、decode
decode的语法:
decode(value,if1,then1,if2,then2,if3,then3,...,else)
表示如果value等于if1时,DECODE函数的结果返回then1,...,如果不等于任何一个if值,则返回else。
select decode(sign(salary - 8000),1,salary*1.15,-1,salary*1.2,salary from employee;
表示:salary大于8000 返回1.15倍,如果小于的话为1.2倍,否则返回salary的值。
4、sign
sign()函数根据某个值是0、正数还是负数,分别返回0、1、-1。
5、nvl
语法:NVL(eExpression1, eExpression2)
如果 eExpression1 的计算结果为 null 值,则 NVL( ) 返回 eExpression2。如果 eExpression1 的计算结果不是 null 值,则返回 eExpression1。eExpression1 和 eExpression2 可以是任意一种数据类型。如果 eExpression1 与 eExpression2 的结果皆为 null 值,则 NVL( ) 返回 .NULL.。
6.substr( string, start_position, [ length ] )
取子字符串,从start_position开始,取length个,length为可选,如果length为空则返回start_position后的所有字符。
例如: select substr('This is a test', 6, 2) from dual; would return 'is'。
start_position为负数时,表示从字符串尾巴倒着数。
7.oracle case when的用法
SELECT col1, col2,
CASE
WHEN col3 > 1 AND col3 <2
THEN '1'
WHEN col3 > 2 AND col3 <3
THEN '2'
WHEN col3 > 3 AND col3 <4
THEN '3'
ELSE '4'
END mylevel
FROM table1
注意点:
1、以CASE开头,以END结尾
2、分支中WHEN 后跟条件,THEN为显示结果
3、ELSE 为除此之外的默认情况,类似于高级语言程序中switch case的default,可以不加
4、END 后跟别名
8.INSTR