【问题标题】:SQL Find and ReplaceSQL 查找和替换
【发布时间】:2011-05-30 03:33:14
【问题描述】:

我怎样才能做到以下几点:

在我的 Wordpress 网站中,我想替换帖子内容中的某些内容

所有实例: http://play.videolog.tv/videos/xx/xx/yyyyyy.flv

替换为: [视频日志]yyyyyy[/视频日志]

xx 可以是 2 位或 3 位数字,但 yyyyyy 始终是 6 位数字。

例子:

http://play.videolog.tv/videos/93/80/398682.flv 到 [videolog]398682[/videolog]

【问题讨论】:

    标签: sql mysql wordpress replace


    【解决方案1】:

    更新:

    update MyTable
    set MyColumn = concat('[videolog]', replace(SUBSTRING(SUBSTRING_INDEX(MyColumn, '/', -1), 2), '.flv', '[/videolog]'))
    where MyColumn like 'http://play.videolog.tv/videos/%'
    

    【讨论】:

    • @virendar:我读得太快了,没有意识到 xx 值是数字。请参阅上面的更新版本。
    • 您好抱歉回复晚了,谢谢!它几乎是完美的......而不是得到 [videolog]398682[/videolog] 我得到了 [videolog]98682[/videolog](缺少 3?)
    • 啊,在我的帖子内容中,当行在其他文本的中间,或者如果其他文本在它之后,它不起作用
    【解决方案2】:

    在 MySQL 中完全做到这一点需要一些字符串魔法。我相信这应该可行:

    UPDATE posts_table
    SET posts_table.post_text = REPLACE(posts_table.post_text, @full_url := MID(posts_table.post_text, @url_start := LOCATE('http://play.videolog.tv/videos/', posts_table.post_text), LOCATE('.flv', posts_table.post_text, @url_start) + 4 - @url_start), 
    CONCAT('[videolog]', MID(@full_url, LENGTH(@full_url) - LOCATE('/', REVERSE(@full_url)) + 2, 6), '[/videolog]'))
    WHERE LOCATE('http://play.videolog.tv/videos/', posts_table.post_text)
    

    您可以使用以下查询对其进行测试:

    SELECT REPLACE(posts_table.post_text, @full_url := MID(posts_table.post_text, @url_start := LOCATE('http://play.videolog.tv/videos/', posts_table.post_text), LOCATE('.flv', posts_table.post_text, @url_start) + 4 - @url_start), 
    CONCAT('[videolog]', MID(@full_url, LENGTH(@full_url) - LOCATE('/', REVERSE(@full_url)) + 2, 6), '[/videolog]')) AS `result`
    FROM posts_table
    WHERE LOCATE('http://play.videolog.tv/videos/', posts_table.post_text)
    

    只需将 posts_table 和 post_text 替换为正确的表/列名即可。

    此查询应替换该 URL 的所有实例,即使它位于一堆文本的中间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-24
      • 1970-01-01
      • 1970-01-01
      • 2010-11-16
      • 2014-09-01
      相关资源
      最近更新 更多