高分問題一枚
資料庫表中一個來電欄位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]+';
------解決方案--------------------
手機號碼前段沒幾個,可以根據這個來判斷
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 code
update tbl_name set caller=substr(caller,2) where caller regexp '^01[^0]'