每日一SQL-REPLACE

每日一SQL-REPLACE

又到了每日一SQL的時間,今天遇到一個有趣的問題

手上有一個專案,原先資料庫有一欄位是用來存網頁內容的,但只有存純文字

後台是直接用TextArea來編輯資料。

類似這樣

55212518b6664bfb85189e45f18298e3

但是改版後呢,這個欄位改成用文字編輯器來編輯,也就是說會連Html一起存進去

類似

b8175a505a664de6ab445501b418c0bc

所以新版網頁直接輸出欄位資料,就已經排版好了。

但,我再將舊資料庫的資料轉檔過去時,由於原先的欄位並沒有包含Html,以至於直接輸出

在網頁上,變成一坨一坨的,沒有斷行的文字,很難看

原先的資料在上傳時雖然有斷行

8b6b89674c3d4e46bd33afdbad656512

但在View上,由於Html不認得,因此變成

08ef4bb1fdc941a3a40b430402e5db28

一種辦法是寫程式來解決,但我認為這是資料的問題,所以就在資料庫解決吧。

首先雖然眼睛看不到,但存到資料庫的資料的確有換行字元 參考 維基 ASCII

由參考資料得知 換行的的碼數是10

所以我只要將char(10)換成Html的<br/>就行了

先用select看看,有沒有正確的替換

527e2876cfd54f438e6dfb4a174cfe9a

可以很清楚的看到,<br/>出現了,確定了之後,就把欄位更新吧。



set 欄位名稱 = REPLACE(欄位名稱, CHAR(10), '<br />') 

更新完之後,就可以直接看結果囉

06560489a0d440a39654c40dac0359d0

這樣該換行的就有換行,清楚多了。

 

附帶一提,在MVC上要在View顯是含有Html的資料,可用<%=Html.DisplayTextFor(p=>p.欄位)%>