SQL Cookbook(2010年11月08日)

第六章 使用字符串

 

   6.1 遍历字符串

 

   建表

   create table t10(

      num number(10)

   )

   插入数据(当做索引)

   declare
      v_index number(2);
   begin
      for v_index  in 1..10 loop
      insert into t10(num) values(v_index);
      end loop;
   end;

   遍历字符串

   select substr(e.ename, iter.pos)
   from (select ename from emp where ename='KING') e,
        (select num as pos from t10) iter
   where iter.pos <= length(e.ename)

 

   6.3 计算字符在字符串中出现的次数

 

   10,CLARK,MANAGER 计算这个字符串中出现多少次逗号

   select (
      (length('10,CLARK,MANAGER') - length(replace('10,CLARK,MANAGER', ',', ''))) / length(',')
   ) as cnt from dual

 

   6.4 从字符串中删除不需要的字符

 

   将emp表中ename的元音字母删除,sal中的0删除

   select ename, replace(translate(ename, 'AEIOU', 'aaaaa'), 'a', '') as stripped1,
       sal, replace(sal, 0, '') as stripped2
   from emp

 

   6.5 将字符和数字数据分离

 

   select data, replace(translate(data, '0123456789', '0'), '0', '') ename,
   to_number(
         replace(
            translate(lower(data), 'abcdefghijklmnopqrstuvwxyz', rpad('z', 26, 'z')),
            'z', '')
    )
   from (select ename || sal data from emp)

 

   6.6 提取姓名的大写首字母缩写

   将全名转换成大写首字母缩写,考虑Stewie Griffin

   select replace (replace (translate(
         'Stewie Griffin', 'abcdefghijklmnopqrstuvwxyz', rpad('#', 26, '#')
       ), '#', ''), ' ', '.')
   from dual

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值