ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 关于字符串分类抽取的几个方法

关于字符串分类抽取的几个方法

原创 Linux操作系统 作者:regonly1 时间:2011-10-21 11:02:49 0 删除 编辑
SQL:
SQL>
SQL> with tmp as(select '4D$$E059509BAF139C' a from dual)
  2  select a, translate(a, '.0123456789', '.') 去掉数字,
  3         replace(translate(a, translate(a, '.0123456789', '.'), '.'), '.') 保留数字,
  4         regexp_replace(a, '[^0-9]*') 保留数字,
  5         regexp_replace(a, '[0-9]*') 去掉数字
  6    from tmp
  7  /
 
A                                             去掉数字         保留数字         保留数字        去掉数字
------------------ ------------------------------------ ------------------------------------ --------
4D$$E059509BAF139C   D$$EBAFC  4059509139   4059509139  D$$EBAFC
 

对字符串: 4D$$E059509BAF139C
实现两个目的:
1、取出里面的全部数字;
2、去掉里面的全部数字;

解释:
正则表达式做法:
regexp_replace(a, '[^0-9]*')   保留数字。方法是替换掉字符串中非数字的字符
regexp_replace(a, '[0-9]*')    去掉数字。方法是替换掉字符串中数字字符

非正则表达式做法:
translate(a, '.0123456789', '.') 去掉数字。方法是用translate转换,“.”转换为“.”,数字转换为空。不能直接转换为空,这样结果就为空了。
replace(translate(a, translate(a, '.0123456789', '.'), '.'), '.') 
去掉非数字(通用做法,可以支持9i)。方法是去掉数字,保留字符,再根据字符,反过来获得数字。这样做是因为数字是可枚举的,非数字却不能。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/12932950/viewspace-709460/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-05-10

  • 博文量
    257
  • 访问量
    1138620