2012-12-29 54 views
0

我的朋友前幾天問我要更改她的數據庫記錄,但問題是,它不僅僅是幾條記錄,它的約1000條記錄,我沒有足夠的時間和神經手動完成。有可能用某種正則表達式來改變它?正則表達式用於更改數據庫中的記錄

我導出的數據庫表,XML爲更好的視野,這裏是它的片段:

<table name="rozdzialy"> 
     <column name="nrrozdzialu">1</column> 
     <column name="link">http://www.4shared.com/file/97583406/1770dfa5/AAA_vol_1_ch_1_MiA.html</column> 
     <column name="link2">AAA/[MiA] AAA vol. 1 ch. 1.zip</column> 
     <column name="idtomu">14</column> 
    </table> 
    <table name="rozdzialy"> 
     <column name="nrrozdzialu">1</column> 
     <column name="link">http://www.4shared.com/file/96401389/bd0b05e2/7th_Period_is_a_Secret_vol_1_ch_1_MiA.html</column> 
     <column name="link2">7th Period is a Secret/[MiA] 7th Period is a Secret vol. 1 ch. 1.zip</column> 
     <column name="idtomu">17</column> 
    </table> 

的「鏈接1」是用舊的鏈接記錄,「鏈接2」是新的地方(其他記錄是空的)。 「link1」包含需要創建新鏈接的所有數據。例如: ... /文件/ 97583406/1770dfa5/AAA_vol_1_ch_1 _MiA.html 新的該地址鏈接看起來像:「AAA/[MIA] AAA第1個CH 1.zip

它能夠做到這一點

+0

afaik在mysql中沒有簡單的regexreplace方法。也許你可以在這裏找到一些解決方案:http://stackoverflow.com/questions/986826/how-to-do-a-regular-expression-replace-in-mysql(特別是在這裏:https://launchpad.net/mysql -udf,正則表達式) – bukart

回答

0

如果你只是想更換整個網址:

UPDATE rozdzialy SET link = link2 

或者,如果要替換的文件名部分,同時保留了前述HSOT /路徑:

UPDATE rozdzialy SET link = CONCAT(
    LEFT(link, CHAR_LENGTH(link) - CHAR_LENGTH(SUBSTRING_INDEX(link, '/', -1))), 
    link2 
)