PL/SQL---ORACEL常用函数整理--

来源:互联网 发布:linux 命令输出到文件 编辑:程序博客网 时间:2024/05/16 09:18
1.translate
语法:TRANSLATE(char, from, to)
用法:返回将出现在from中的每个字符替换为to中的相应字符以后的字符串。
            若from比to字符串长,那么在from中比to中多出的字符将会被删除。
            三个参数中有一个是空,返回值也将是空值。
举例:SQL> select translate('abcdefga','abc','wo') 返回值 from dual;
            返回值
            -------
            wodefgw
2.replace 
语法:REPLACE(char, search_string,replacement_string)
用法:将char中的字符串search_string全部转换为字符串replacement_string。
3.nvl
用法:nvl(a,b) 如果a不为null 则返回a,如果a为null则返回b;
用法:nvl2(a,b,c) ,如果a不为null 则返回b,如果a为null则返回c;

<>不能比较空

4.decode 

类似于if(条件 1 ,‘A’,2,'B') 1为A  2 为B

5.sign   正数 为 1 , 0 为0 , 负数 为  -1

6.SUBSTR(string,start_position,[length])    求子字符串,返回字符串
解释:string 元字符串
           start_position   开始位置(从0开始)
           length 可选项,子字符串的个数
For example:
substr("ABCDEFG", 0); //返回:ABCDEFG,截取所有字符 
substr("ABCDEFG", 2); //返回:CDEFG,截取从C开始之后所有字符 
substr("ABCDEFG", 0, 3); //返回:ABC,截取从A开始3个字符 
substr("ABCDEFG", 0, 100); //返回:ABCDEFG,100虽然超出预处理的字符串最长度,但不会影响返回结果,系统按预处理字符串最大数量返回。 
substr("ABCDEFG", 0, -3); //返回:EFG,注意参数-3,为负值时表示从尾部开始算起,字符串排列位置不变。
7.INSTR(string,subString,position,ocurrence)查找字符串位置
解释:string:源字符串
           subString:要查找的子字符串
           position:查找的开始位置
           ocurrence:源字符串中第几次出现的子字符串
For example:
INSTR('CORPORATE FLOOR','OR', 3, 2)中,源字符串为'CORPORATE FLOOR', 目标字符串为'OR',起始位置为3,取第2个匹配项的位置;返回结果为 14 '
INSRT 还用于多个查询代替 IN 示例:
WHERE  INSTR(',' || ID字符串 用逗号链接 || ',' , 
                ',' || table.id || ',') > 0

示例一:

完成:当A > B,为 YES;当A<B,为NO, 当 A=0 是为YES

主要用于 A 和 B 数据比较之后 希望显示的结果,在decode 里面还可以在次嵌套decode 做多次判断

decode(sign(nvl(decode(A,0,'',A,A), B) - B),

     1,'YES',

    0,' YES ',

    -1 ,'NO';

示例二:

2.默认显示ALL,选择Y或N 选择显示YES或NO

主要用于比较结果的查询  A 和  B   大于或 小于  显示哪些数据

这样可以减少每次条件的查询代码,减少代码量

当然你也可以用 IF ELSEIF ELSEFI ....... IF 一直循环下去

    IF  p_over = 'Y' THEN

      v_over :=   'Y';

    ELSif p_over='N' then

      v_over := 'N';      

    END IF;

 AND (v_over IS NULL or decode(sign(nvl(A, B) - B),
                             1, --NO
                             'N',
                             0, --NO
                             'N',
                             -1, --YES
                             'Y') = v_over)