Oracle/PLsql/存储过程 常用的字符串处理方法

工作中较常用的是寻找字符串, 判断位置,替换.

1. 查找字符串 : INSTR

    语法: INSTR(string,subString,position,ocurrence)

    解释:

        string:源字符串
        subString:要查找的子字符串
        position:查找的开始位置
        ocurrence:源字符串中第几次出现的子字符串

    这里的position和ocurrence是可以省略的.

    如: 查询字符串里含有"aaa"即条件成立:

IF INSTR('abcdefgaaa','aaa') > 0 THEN
.....
END IF;

   也可以使用定位, 如常的判断以什么结尾, 或者以为什么开头的, 知道指定位置的查询:

 IF INSTR(t_staging_column_basepk,',',length(t_staging_column_basepk)) >0 THEN
    t_staging_column_basepk := ltrim(t_staging_column_basepk) ||t_staging_column_logpk;
    ELSE
        t_staging_column_basepk := ltrim(t_staging_column_basepk)||','||t_staging_column_logpk;
    END IF;

2. 拼接字符串 :  ||

   经常用到拼接字符串, 这里需要使用两个竖线 || 来连接字符串. 字符串用单引号来定义. 如: 

'abc' || 'def' = abcdef

3. 截取字符串 : substr

  语法: SUBSTR(string,start_position,[length])    求子字符串,返回字符串
  解释:

       string 源字符串
       start_position   开始位置(从0开始)
       length 可选项,子字符串的个数

 这里可以结果instr来确定位置, 如:从找到table里里的"."数字开始+1往后截取所有字符:

table_name := substr(i_base_table_name,instr(i_base_table_name,'.',-1)+1);

  也可以按指定位置截取指定字符数:

 

substr("ABCDEFG", 0, 3); //返回:ABC,截取从A开始3个字符 

4.替换字符串, decode, replace

语法 : decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值)

解释:

IF 条件=值1 THEN
    RETURN(翻译值1)
ELSIF 条件=值2 THEN
    RETURN(翻译值2)
    ......
ELSIF 条件=值n THEN
    RETURN(翻译值n)
ELSE
    RETURN(缺省值)
END IF

如:

'decode(src,''I'',''ADD'',''U'',''UPD'',''D'',''DEL'')'

这个方法很有意思, 将一个字符串上指定的值换成另外一个值. 系统会根据","的个数来判断哪个是源, 哪个是目标替换的新值.除第一个src以外, 从str1开始, 奇数是源, str2偶数是目的新值.这个例子的就是如果src的值是I,替换成ADD,如果值是U 替换也UPD.以此类推.

另外一种replace方法:

语法: replace(strSource, str1, str2) 将strSource中的str1替换成str2

解析:strSource:源字符串

     str1: 要替换的字符串

     str2: 替换后的字符串

select '替换字符串' as oldStr, replace('替换字符串', '替换', '修改') as newStr from dual

5. 判断字符串的长度 : length , lengthb

语法及释义:

length(string)计算string所占的字符长度:返回字符串的长度,单位是字符

lengthb(string)计算string所占的字节长度:返回字符串的长度,单位是字节

select length('飘') from dual
select lengthb('飘') from dual

6. 判断字符串为空时,返回新值 : NVL(), NVL2()

语法: nvl(string1, replace_with)

解释: 如果string1为null,那么这个函数返回 replace_with 所代表的值.

例子:

nvl(to_char(some_numeric),’some string’)    --其中some_numeric指某个数据类型的值。
nvl(yan,0) 的意思是如果yan是null, 则取0值。

语法: nvl2()(E1, E2, E3)

解释: 它的功能是如果E1为NULL,则函数返回E3,若E1不为null,则返回E2。

例子: 如果testVariable为null,返回-1, 否则返回888.

nvl(testVariable,888,-1) 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值