2011-12-07 21 views
0

我在我的數據庫中有一個網站URL的列,並且有許多不同類型的結果。一些與www,一些與http://和一些沒有。MySQL查詢以替換http://和www在網站領域

我真的需要清理現場,所以有一個查詢我可以運行:

  • 只有domain.com格式替換所有域。因此,請刪除任何www或http://的
  • 如果有任何字段的格式不正確,如「N/A」或其他內容,那麼沒有「。」的任何內容我需要清空它。

然後當然我會更新我的PHP代碼,從現在開始自動剝離它。但對於目前的條目,我需要清理這些。

+5

'www.example.com'和'example.com'是不同的主機名,可以解析到不同的IP,並且可以通過交不同的虛擬主機(通過HTTP),即使它們解析爲相同的IP。假設它們是相同的是不明智的。 – Quentin

回答

3

您可以使用REPLACE函數來實現您的第一點 - 請參閱其他答案。但是,我會認真考慮將www留在條目中;因爲正如第一條評論指出的那樣,存在實際差異。例如,您可能會錯過url之類的www2.domain.com。如果你想在你的應用中顯示它們,你可以簡單地在文本顯示中刪除它們(例如,在第一個'。'之後進行子串處理),但保持href一致(如果顯示爲鏈接)。

您的第二點可以使用INSTR或LOCATE函數來實現。

簡單:

UPDATE table SET url = 'N/A' WHERE LOCATE('.', url) = 0 

瞭解更多關於這兩個功能here

+0

真棒,謝謝你的工作完美! – Drew

1
UPDATE table SET column = REPLACE(column, 'http://', ''); 


UPDATE table SET column = REPLACE(column, 'www.', ''); 
+4

這會破壞條目[http://no-www.org/](http://no-www.org/) –