专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > Oracle技术

依据分号或者逗号来划分第一个有效的11位电话号码

发布时间:2010-05-20 14:01:29 文章来源:www.iduyao.cn 采编人员:星星草
根据分号或者逗号来划分第一个有效的11位电话号码
求助:
a表里面一个字段phone用来存储电话和固话,
oracle能否根据分号或者逗号来划分第一个有效的11位电话号码,固定电话排除。

13543364231;15989213791--中文分号,只取第一个13543364231
13138712139;2886905    --中文分号,取第一个13138712139
2871132;13686737699    --中文分号,取第二个13686737699    
2211389/15818911218     ---斜杠号,取第二个15818911218     
2295047,13413330936     --英文逗号,取第二个13413330936     
2870810,13686736353    ---中文逗号,取第二个13686736353    



------解决思路----------------------
给你个思路吧 先用替换函数TRANSLATE 替换分隔符为 统一字符 如 / ,然后 再进行拆分;我以前是用excel拆分的 - - 然后就可以提取了;不知道数据量有多大?phone字段确定只有两组号码吗?我遇到过乱起八糟的都有 - -
------解决思路----------------------
引用:



with t as
 (select '13543364231;15989213791' str
    from dual
  union all
  select '13138712139;2886905' str
    from dual
  union all
  select '2871132;13686737699' str
    from dual
  union all
  select '2211389/15818911218' str
    from dual
  union all
  select '2295047,13413330936' str
    from dual
  union all
  select '2870810,13686736353' str
    from dual)
select decode(regexp_instr(str, '(;
------解决思路----------------------

------解决思路----------------------
/
------解决思路----------------------
,
------解决思路----------------------
,)'),
              12,
              substr(str, 1, 11),
              substr(str, regexp_instr(str, '(;
------解决思路----------------------

------解决思路----------------------
/
------解决思路----------------------
,
------解决思路----------------------
,)') + 1))
  from t;

------解决思路----------------------
以上语句支持任何间隔符,只要间隔符不是数字就可以
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: