[MySQL]如何修改取代資料庫欄位中,全部的特定字串變成新的字串

有的時候,網站內容上有一些變化,好比說服務電話、地址、營業時間改了,或是網址更換等等,
在手動一頁一頁更新這些資訊時,經常會有些遺漏,
特別是已經有很多內容的中大型網站,
需要修改的字串會重復出現在很多很多不同頁面(當然也既不清楚有哪些頁面了),
那麼幾乎就是無法手動更新,
無法手動?那要怎麼自動呢?
 

如何以 MySQL 內建功能來取代欄位中特定字串


沒錯,
遇到這種情況呢,事實上在 MySQL 中就已經內建了這個功能了,
而且不需要寫很多的程式碼,
一行指令就可以完成這個看似永遠無法結束的大工程,
這個MySQL的指令就是:Replace
 
那要怎麼下這個指令呢?
我們假設一個情境個案,就是網站從原本的 HTTP,改換成了更安全的 HTTPS,
雖然已經設定好了 301 的自動轉址(301 redirect),
舊網址可以自動轉換到新網址,
不過在資料庫中很多的內文都還是HTTP的連結字串,
於是我們的目標就是把所有內文欄位裡,有提到 HTTP:// 的字串,
全部取代成為 HTTPS://。
 
指令碼就這麼寫:

UPDATE content
SET body = REPLACE(body, 'http://舊的網址', 'https://新的網址')
在上面的範例中,
content 是內文的表單,body則是儲存內容的欄位。
第一個標為紅色的字串,就是要搜尋準備被替換的字串,
在這個個案中,當然就是『HTTP://的這個舊的網址』,
第二個以綠色標示的,就是新的字串。
 
那如果是要變更服務電話,也是一樣的就寫:

UPDATE content
SET body = REPLACE(body, '0800-XXX-XXX', '0809-XXX-XXX')

一行解決,
是不是輕鬆自在多了,馬上就可以下班了吧 \^^/
試試看吧

Readers comment