> 백엔드 개발 > PHP 튜토리얼 > 高分有关问题一枚

高分有关问题一枚

WBOY
풀어 주다: 2016-06-13 13:29:29
원래의
930명이 탐색했습니다.

高分问题一枚
数据库表中一个来电字段caller
caller有普通的手机号,也有带0的手机号,还有010-1234567这样的座机号码等等
请问如何去掉那些前面带0的手机号?
求高效实现

------解决方案--------------------
手机号和座机号有如下区别

长度
号码内是否存在"-"

区别出手机号 过滤首位 为0的手机号码

是这样吧?正则咯...


------解决方案--------------------
select ... where left(caller,1)!='0';
------解决方案--------------------
座机号加区号是11位把。手机号还有前导0的话就大于11位了。根据这个规则来替换。
------解决方案--------------------

SQL code
SELECT * FROM `tbl` WHERE `calller` REGEXP '^01[3458]+';
<br><font color="#e78608">------解决方案--------------------</font><br>手机号码前段没几个,可以根据这个来判断<br><br>
로그인 후 복사
PHP code

$tel =  $val)
{
    if($val[0] == '0' && in_array("$val[1]$val[2]", $tel_arr))
        $tel[$key][0] = '';
}
print_r($tel);
<br><font color="#e78608">------解决方案--------------------</font><br>
手机号都是 1 打头<br>只要排除掉 010 北京区号就可以了<br><br>$caller = preg_replace('/^0(1[^0])/', '$1', $caller);
<br><font color="#e78608">------解决方案--------------------</font><br>
로그인 후 복사
探讨
如果要在数据库里直接把手机号码前面的0去掉可以这样做

SQL code


update `user`
set `tel`= substring(tel,2,length(tel))
where
length(`tel`)=12


如果只是想在查询出来的结果里把0去掉 可以这样

SQL code


select
case when length(tel……

------解决方案--------------------
直接 mysql 操作
SQL code
update tbl_name set caller=substr(caller,2) where caller regexp '^01[^0]' <div class="clear">
                 
              
              
        
            </div>
로그인 후 복사
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿