当前位置:   article > 正文

oracle字符操作进阶篇整理_oracle统计字段中字符出现的个数

oracle统计字段中字符出现的个数

1、统计字符出现次数

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

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

2、批量删除不想要字符

如:删除ABCDEFG 中的 ABE

使用translate内置函数

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

3、分离数字和字符数据

如:SMITH800,需要分离为 SMITH 800

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

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

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

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

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

  1. select replace(
  2. replace(
  3. translate(replace('Stewie Griffin', '.', ''),
  4. 'abcdefghijklmnopqrstuvwxyz',
  5. rpad('#',26,'#') ), '#','' ),' ','.' ) ||'.'
  6. from dual;
  7. --返回S.G.

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/231044
推荐阅读
相关标签
  

闽ICP备14008679号