oracle字符操作进阶篇整理

1、统计字符出现次数

如:统计以下字符串逗号出现次数

字符串的总长度减去去掉逗号之后的字符串长度,就得到了逗号的个数,
1 行调用 LENGTH 函数获取字符串总长 ,第 2 行仍然调用 LENGTH 函数获取不含逗号的字符串长度,而逗号的删除则借助了REPLACE 函数
 select (length('10,CLARK,MANAGER')-
 length(replace('10,CLARK,MANAGER',',','')))/length(',')
  from dual;
--返回结果2
如果被搜索的字符串的长度大于 1 的话,就必须使用除法运算。下面的例子统计在字符串 HELLO HELLO 中出现了多少个 LL
 select
 (length('HELLO HELLO HELLO')-
 length(replace('HELLO HELLO HELLO','LL','')))/length('LL')
  ,
 (length('HELLO HELLO HELLO')-
 length(replace('HELLO HELLO HELLO','LL','')))  
 from DUAL;
--返回结果 3  6

2、批量删除不想要字符

如:删除ABCDEFG 中的 ABE

使用translate内置函数

 select  
 replace(translate('ABCDEFG','ABE','aaaaa'),'a')
 from DUAL;
--返回结果CDFG

3、分离数字和字符数据

如:SMITH800,需要分离为 SMITH 800

为了提取数字,首先用 TRANSLATE 函数把所有的字符数据分离出来。使用 TRANSLATE 函数把每一个非数字字符都替换为小写字母 z。然后使用 REPLACE 函数删除,所有的小写字母 z,这样就只留下数字字符,我们可以将其转换为一个数字
 select replace(
  translate('SMITH800','0123456789','0000000000'),'0') ,
  to_number(
  replace(
  translate(lower('SMITH800'),
  'abcdefghijklmnopqrstuvwxyz',
  rpad('z',26,'z')),'z'))  
  from dual;
--返回结果 SMITH   800

4、判断含有字母和数字的字符串

使用 TRANSLATE 函数把字母字符和数字字符替换成单一字符,然后找出那些除了该字符还
包含其他字符的行
   select data 
 from test
 where translate(lower(data),
 '0123456789abcdefghijklmnopqrstuvwxyz',
 rpad('a',36,'a')) = rpad('a',length(data),'a');

5、提取姓名的首字母(大写)

如 获考虑人名 Stewie Griffifin,你希望得到 S.G.

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

--返回S.G.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

心寒丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值