日期:2014-05-17  浏览次数:20674 次

查询过滤数据问题
tel
13711116875
12345678901
010-1234567
1371111687531
有很多这种的想要过滤出来正确的电话号码、、如13711116875
select * from teltable where tel length(tel)=11
后面的条件怎么写!~google了一下、、不知道搜索什么!



------解决方案--------------------
用正则表达式做。regexp_like
------解决方案--------------------
SQL code

--例如
select tel from tel_table where regexp_like(tel,'((\d{11})|^((\d{7,8})|(\d{4}\d{3})-(\d{7,8})|(\d{4}|\d{3})-(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1})|(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1}))$)');

------解决方案--------------------
11位 + 纯数字,另外,还要有号段表对映(移动、联通、电信)

正则表达式判断 前半段,后半段,则 用 substr 与号段维表关联吧