我正在使用具有電話號碼的遺留數據庫表。現場通過mysql數據庫記錄循環並更改電話格式
但問題是,所有的條目(超過4K)都在不同
格式。
我在想,如果有一個快速的方法使用PHP通過循環記錄和更新記錄到一個特定的電話號碼格式
我正在使用具有電話號碼的遺留數據庫表。現場通過mysql數據庫記錄循環並更改電話格式
但問題是,所有的條目(超過4K)都在不同
格式。
我在想,如果有一個快速的方法使用PHP通過循環記錄和更新記錄到一個特定的電話號碼格式
4K聽起來並不像很多記錄都解決這些問題。
我敢打賭,不同的格式屬於有限數量的組合。
我想知道是否有可能通過一些審慎的SQL查詢。如果你的RDBMS有正則表達式和字符串替換函數,你可以用幾條UPDATE指令來管理它。如果沒有,任何具有查詢數據庫,替換字符串和更新的語言都可以完成這項工作。
我同意4k記錄是沒有什麼可擔心的。我建議查詢電話號碼和表格的主要ID,從電話號碼中剝離所有字符,然後將其操作爲您想要的格式。或者,您可以將其保留爲僅數字,並在每次顯示時使用前端修改數字。以下是您可以嘗試使用的一個未經測試的腳本。不處理擴展名,預計有10個數字。
// mysql_connect stuff
$q = mysql_query("Select phone_id, phone_number From phones");
while($r = mysql_fetch_assoc($q)) {
$num = ereg_replace("[^0-9]", "", $r['phone_number']);
if(strlen($num) == 10) {
$num = substr($num, 0, 3) . '-' . substr($num, 3, 3) . '-' . $substr($num,-4);
}
$update = mysql_query("Update phones Set phone_number = '" . $num . "' Where phone_id = " . $r['phone_id']);
// updated?
}
謝謝Aaron,我想我會多次瀏覽這個數據庫 – 2010-03-03 12:07:24
我同意,UPDATE語句可以做到這一點。你還有其他的功能,比如SUBSTRING,LEFT,RIGHT,TRIM等。你甚至可以獲得角色實例的位置。可能最好是複製表格並測試它。儘管如此,正如你所說,4K真的很小。 – Kezzer 2010-03-03 11:12:40
謝謝,但你的意思是4000記錄是小? – 2010-03-03 11:15:32
是的,非常小。 – duffymo 2010-03-03 12:09:17