V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
python30
V2EX  ›  程序员

求一个 mysql 数据库替换图片的正规表达式

  •  
  •   python30 · 298 天前 · 1301 次点击
    这是一个创建于 298 天前的主题,其中的信息可能已经有所发展或是发生改变。
    数据库文章 body 里有两种图片,一种是<img src="https://www.aaa.com/aa.jpg" />一种是 <img src="https://www.bbb.com/bb.jpg" /> 现在想用一种替换字符把 <img src="https://www.bbb.com/bb.jpg" />
    全部替换掉。就是替换为空。请问这样的 mysql 语句怎么写? 哪位朋友处理过?谢谢
    12 条回复    2023-06-04 21:44:41 +08:00
    totoro52
        1
    totoro52  
       298 天前
    REGEXP_REPLACE 函数, 这个是 mysql8 的新函数,低于 8 就不行
    UPDATE 表名
    SET body = REGEXP_REPLACE(body, 'https://www\.aaa\.com', 'https://www.bbb.com')
    WHERE body LIKE '%https://www.aaa.com%';
    GPT 写的 SQL ,请自测,LIKE 也可以换为 REGEXP 函数
    如果低于 8 ,你还是写代码解决吧,批量读出来替换在批量去更新
    totoro52
        2
    totoro52  
       298 天前
    GPT 写的这个正则应该是 hi 满足不来你这个需求,会把不是图片的也是替换,你改改加个标签上去即可。
    python30
        3
    python30  
    OP
       298 天前
    @totoro52 mysql5.7 谢谢。这个改改可以用到 5.7 版本上吗?
    totoro52
        4
    totoro52  
       298 天前
    @python30 最低支持 8 ,只有 8 有这个函数, 你 mysql5.7 肯定不行了,用代码去解决吧
    rockeyhan
        5
    rockeyhan  
       298 天前
    update 'table_name' set 'field_nam' = replace ('field_name','from_str','to_str');

    几年前在 MySQL 5.* 上用过,可行。
    Leon406
        6
    Leon406  
       298 天前
    可以参考下, 之前我就是这么做的

    UPDATE 表名
    SET body = replace (body, 'https://www.aaa.com', '')
    Where body REGEXP('<img src="https://www.aaa.com" />')
    totoro52
        7
    totoro52  
       298 天前
    @rockeyhan 那样不是图片的也会被替换了, 不过可以<img src="https://www.aaa.com 改<img src="https://www.bbb.com 这样子 也不是不行 曲线救国
    rockeyhan
        8
    rockeyhan  
       298 天前
    假设题主说的 body 是 table ,而 content 是 filed:

    update body set content = replace(content,'<img src="https://www.aaa.com" />','');

    我觉得应该可行。
    rockeyhan
        9
    rockeyhan  
       298 天前
    哦哦,错了应该是:

    update body set content = replace(content,'<img src="https://www.bbb.com/bb.jpg" />','');
    python30
        10
    python30  
    OP
       298 天前
    @rockeyhan
    @totoro52
    @Leon406

    忘了说明一个情况了
    就是图片有很多。而且
    都是 https://www.bbb.com/xxx/xxx/xxx.jpg 样式式的,其中的 xxx 可能是数字或字符或组合这样的。不是固定的字符串。
    totoro52
        11
    totoro52  
       298 天前
    @python30 #10 那你没有 8 版本是解决不来这个问题了,replace 函数只是简单的解决替换
    你不想更新 8 就把文件导出来 SQL , 然后去 8 上面改完在导入回来, 不想这么麻烦就用代码批量拉下来改 批量更新上去,看你
    python30
        12
    python30  
    OP
       297 天前
    @totoro52 hao de , xie xie.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3240 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 11:41 · PVG 19:41 · LAX 04:41 · JFK 07:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.