2013-02-12 26 views
1

我發現我的65.000的用戶中,有許多誰在他們的電子郵件空格這樣的:用戶電子郵件與空白,修復與MySQL?

"[email protected] " 
" [email protected]" 
" [email protected] " 

這很容易通過PHP TRIM()函數來解決,我會得到乾淨的郵件。

不可能在這樣的輸入處輸入電子郵件,但它是,因此我有這樣的電子郵件在前20k用戶。我不知道我是否可以做一個聰明的更新MySQL查詢,在一次運行中清理(修剪電子郵件),或者如果我必須使用一些PHP,我抓住所有用戶,並通過它們,trim()和更新每個65k用戶的行數?

回答

4

您可以使用mysql TRIM還有:

update users set email = TRIM(email); 
+0

真是個好回答!但查詢失敗:關鍵'uniq_email'的重複條目'[email protected]' - 在這種情況下我能做些什麼?我查了電子郵件,只有一行,所以我不明白爲什麼它認爲它有重複的條目?有什麼建議麼? – Karem 2013-02-12 12:51:14

+2

@Karem'SELECT A.Email FROM Users A IN JOIN用戶B ON A.Email = TRIM(B.Email)GROUP BY A.Email HAVING COUNT(*)> 1'會顯示重複的內容 – Tobsey 2013-02-12 12:54:36

+0

或'select trim (電子郵件)由用戶組通過修剪(電子郵件)有計數(*)> 1' – 2013-02-12 12:56:15

-3

在PHP中使用的trim()功能和更新所有條目的數據庫。注意PHP的執行時間,你可能不得不在不同的執行中分割你的更新。

+3

-1的努力,因爲這是一個非常糟糕的建議。這是可能的一個簡單的更新聲明。 – 2013-02-12 12:40:04

+0

也許,因爲我主要完成了PHP,這將是我的解決方案。第一個答案似乎更好地解決了這個問題。 – 2013-02-12 12:41:30