1. 程式人生 > >【解決方案 五】---sql語句模糊替換

【解決方案 五】---sql語句模糊替換

最近做的專案中,發現一列year資料都帶有”年”,而我想過濾這個字來和其它表來進行聯表查詢,那麼就用到了sql中的函式
這裡寫圖片描述

update mhi set year = REPLACE(year,substring(year, LOCATE(year,’年’)-1,1),”)

1,首先我想替換掉所有“年”,所以當發現“年”的時候我要替換為空格,此處用到replace函式

replace(str1, str2, str3): 在字串 str1 中,當 str2 出現時,將其以 str3 替代。

update mhi set year = REPLACE(year,此處應該為年字,”)

2,怎麼才能定位到中間的年字呢,我們發現每個年字都出現在四個數字後邊,所以定位到年的index位置就好了,此處用到substring來擷取年字

SUBSTR(str,pos,len): 由中的第位置開始,選出接下去的個字元。

update mhi set year = REPLACE(year,substring(year, 年的位置index,1),”)

3,那麼怎麼才能拿到年的位置呢,就得用到定位函式locate

LOCATE(substr,str) 返回子串 substr 在字串 str 中第一次出現的位置。如果子串 substr 在 str 中不存在,返回值為 0:

update mhi set year = REPLACE(year,substring(year, LOCATE(year,’年’)-1,1),”)

於是全部替換成功,效果如下
這裡寫圖片描述