在SQL中查找并替换带占位符的字符串

时间:2014-02-24 20:10:39

标签: mysql sql replace

是否可以搜索这样的字符串:

http://getfile1.posterous.com/getfile/files.posterous.com/temp-2013-03-30/kBpHaviyoumcvCEHnGnrDfwHwmJIrnqrHrxhCnHwfBIHuDsxbemHlxwEwCdi/IMG_6870.jpg

虽然有些部分是占位符,如:

http://getfile%.posterous.com/getfile/files.posterous.com/temp-2013-03-%/%/IMG_6870.jpg

并将其替换为:

http://my.domain.com/wordpress/wp-content/uploads/2013/03/IMG_6870.jpg

感谢您的投入!

1 个答案:

答案 0 :(得分:0)

MySQL对正则表达式的支持非常有限,但您可以尝试使用SUBSTRING_INDEX和REPLACE字符串函数的组合,如下所示:

UPDATE tablename
SET
  url =
  CONCAT(
    'http://my.domain.com/wordpress/wp-content/uploads/',
    REPLACE(
      REPLACE(
        SUBSTRING_INDEX(
          SUBSTRING_INDEX(url, '/', -3),
          '-',
          3),
        'temp-',
        ''),
      '-',
      '/'),
    '/',
    SUBSTRING_INDEX(url, '/', -1));

但是你需要确保所有字符串都具有相同的格式。请参阅小提琴here