oracle函数 总结(使用及在什么情况下使用)

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

INSTR方法的格式为
INSTR(源字符串, 目标字符串, 起始位置, 匹配序号)

例如:INSTR('CORPORATE FLOOR','OR', 3, 2)中,源字符串为'CORPORATE FLOOR', 目标字符串为'OR',起始位置为3,取第2个匹配项的位置。
默认查找顺序为从左到右。当起始位置为负数的时候,从右边开始查找。

所以SELECT INSTR('CORPORATE FLOOR', 'OR', -1, 1) "Instring" FROM DUAL的显示结果是
Instring
——————
14

 

你可能感兴趣的:(数据库)