用于更改数据库中记录的正则表达式

时间:2012-12-29 14:52:32

标签: mysql regex database

我的朋友几天前问我改变她的数据库记录,但问题是,它不仅仅是一些记录,大约有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>

“link1”是带有旧链接的记录,“link2”是new的位置(其他记录为空)。 “link1”包含创建新链接所需的所有数据。例如: ... /文件/ 97583406 / 1770dfa5 /的 AAA_vol_1_ch_1 _MiA.html 该地址的新链接如下所示:“AAA / [MiA] AAA vol.1 ch.1.zip

可以这样做吗?

1 个答案:

答案 0 :(得分:0)

如果您只想替换整个网址:

UPDATE rozdzialy SET link = link2

或者,如果要在保留前面的hsot / path的同时替换文件名部分:

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