数据库表中一个来电字段caller
caller有普通的手机号,也有带0的手机号,还有010-1234567这样的座机号码等等
请问如何去掉那些前面带0的手机号?
求高效实现
------解决方案--------------------
手机号和座机号有如下区别
长度
号码内是否存在-
区别出手机号 过滤首位 为0的手机号码
是这样吧?正则咯...
------解决方案--------------------
select ... where left(caller,1)!='0';
------解决方案--------------------
座机号加区号是11位把。手机号还有前导0的话就大于11位了。根据这个规则来替换。
------解决方案--------------------
sql codeselect * from `tbl` where `calller` regexp '^01[3458]+';
------解决方案--------------------
手机号码前段没几个,可以根据这个来判断
php code$tel = $val){ if($val[0] == '0' && in_array($val[1]$val[2], $tel_arr)) $tel[$key][0] = '';}print_r($tel);
------解决方案--------------------
手机号都是 1 打头
只要排除掉 010 北京区号就可以了
$caller = preg_replace('/^0(1[^0])/', '$1', $caller);
------解决方案--------------------
探讨
如果要在数据库里直接把手机号码前面的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 codeupdate tbl_name set caller=substr(caller,2) where caller regexp '^01[^0]'
