使用SQL查询替换字符串的中间部分

时间:2017-05-30 17:42:00

标签: sql wordpress string replace

我正在从文件共享网站转移到专用服务器。 我将所有4500个链接都转移到了服务器上。 由于之前的链接来自该文件共享网站,因此它们具有某种复杂的格式。 我想在所有wordpress表中替换在其URL中间有随机字符的旧链接,以及格式清晰的新链接。 即使使用%和_通配符也尝试过很多查询,根本没有结果。 搜索了这个网站和其他网站,所有这些都是关于更改字符串的第一个字符数或用新的字符串替换完整的字符串。

我目前面临的问题没有人。 例: 我以前的一个链接是: http://luckymojy.dl1.rapidpars.com/21520/11166830/bj83fhh0v8h/Crowd%2520Laughing%2520Sound%2520Effects.mp4 应该用以下内容替换: http://gooshkon.ir/dl/Crowd%2520Laughing%2520Sound%2520Effects.mp4 或者看看这一个 旧链接: luckymojy.dl4.rapidpars.com/21520/7457627/c96r7emjghm/Juliet%2520%26%2520ET%2520Series%2520Braille%2520Embossers.flv 新链接: gooshkon.ir/dl/Juliet%2520%26%2520ET%2520Series%2520Braille%2520Embossers.flv 请注意,文件共享网站中的这些旧链接具有以下模式: user_name.download_server.rapidpars.com/account_no/file_no/file_serial/file_name.ext 应修改如下: gooshkon.ir/dl/file_name.ext file_nos是6位数,7位数,其中一些是8位数。 所有其他参数具有恒定长度。 是否可以一次修改所有链接? 文件名前的字符串应替换为gooshkon.ir/dl/ 实际上,文件名应保持不变。 手动更改4500链接是一项繁琐的任务。 这个解决方案吗? 感谢

2 个答案:

答案 0 :(得分:1)

只需使用REPLACE命令即可。你可以这样做(我只是为了创建一个临时表)。

    CREATE TABLE #LINKS
    (
        MY_LINK VARCHAR(255)
    )

    INSERT INTO #LINKS VALUES ('http://luckymojy.dl1.rapidpars.com/21520/11166830/bj83fhh0v8h/Crowd%2520Laughing%2520Sound%2520Effects.mp4')
    INSERT INTO #LINKS VALUES ('luckymojy.dl4.rapidpars.com/21520/7457627/c96r7emjghm/Juliet%2520%26%2520ET%2520Series%2520Braille%2520Embossers.flv')


    DECLARE @TEXT_TO_REMOVE VARCHAR(255) = 'http://luckymojy.dl1.rapidpars.com/21520/11166830/bj83fhh0v8h/'
    DECLARE @TEXT_TO_SUBSTITUTE VARCHAR(255) = 'http://gooshkon.ir/dl/'

    UPDATE      #LINKS
    SET         MY_LINK =REPLACE(MY_LINK,@TEXT_TO_REMOVE,@TEXT_TO_SUBSTITUTE)
    WHERE       MY_LINK LIKE @TEXT_TO_REMOVE + '%'



    SET @TEXT_TO_REMOVE = 'luckymojy.dl4.rapidpars.com/21520/7457627/c96r7emjghm/'
    SET @TEXT_TO_SUBSTITUTE = 'gooshkon.ir/dl/'


    UPDATE      #LINKS
    SET         MY_LINK =REPLACE(MY_LINK,@TEXT_TO_REMOVE,@TEXT_TO_SUBSTITUTE)
    WHERE       MY_LINK LIKE @TEXT_TO_REMOVE + '%'

答案 1 :(得分:1)

您的文件名是:

  SUBSTRING_INDEX(MYLINK, '/', -1)

用新路径作为前缀:

SELECT
  CONCAT('path/', SUBSTRING_INDEX(old_path, '/', -1))
FROM
  wordpress_move

示例小提琴: http://sqlfiddle.com/#!9/196e8c/2/0

相关问题