mysql批量替换数据库内容图片alt的“描述”

img


mysql批量替换数据表 le_drafts 字段 content 里面图片所有alt的描述


```html

src="/upload/article/images/91.jpg" alt="图片描述都不一样">
我想把这个描述批量替换成指定的字段或者替换为空

src="/upload/article/images/91.jpg" alt="批量换成描述或者空">
该回答引用ChatGPT
首先需要连接到MySQL数据库,然后执行SQL语句更新le_drafts表的content字段。具体步骤如下:

1. 连接到MySQL数据库


mysql -u用户名 -p密码 数据库名


2. 更新le_drafts表的content字段,使用MySQL的replace函数替换alt的描述


UPDATE le_drafts SET content = replace(content, 'alt="图片描述都不一样"', 'alt="批量换成描述或者空"');


或者替换为空


UPDATE le_drafts SET content = replace(content, 'alt="图片描述都不一样"', 'alt=""');


3. 关闭MySQL连接


exit;

该回答引用于ChatGPT:
你可以使用MySQL的UPDATE语句和正则表达式来批量替换数据表 le_drafts 字段 content 里面图片所有alt的描述。以下是一个可能的解决方案:

UPDATE le_drafts SET content = REGEXP_REPLACE(content, '<img[^>]+alt="([^"]*)"[^>]*>', '<img alt="替换后的描述">', 1, 0, 'c')
WHERE content REGEXP '<img[^>]+alt="([^"]*)"[^>]*>';

这个SQL语句会在数据表le_drafts中查询所有包含alt属性的图片标签,并使用正则表达式捕获其中的描述文本。然后,它会将每个匹配的描述替换为指定的字段或为空字符串。

如果你想将描述替换为空字符串,把<img alt="替换后的描述">改成<img>即可。

  • 好的,以下是可以用来批量替换数据库表中某个字段中所有图片的alt描述的MySQL语句:
UPDATE le_drafts SET content = REGEXP_REPLACE(content, '<img(.*?)alt="(.*?)"(.*?)>', '<img$1alt="替换后的描述"$3>')
WHERE content REGEXP '<img(.*?)alt="(.*?)"(.*?)>';

将上述语句中的le_drafts替换为您要操作的数据库表名,将content替换为您要替换的字段名,将<img(.*?)alt="(.*?)"(.*?)>替换为匹配您要替换的图片标签的正则表达式。

该语句会将每个图片的alt描述都替换成固定的描述。如果您需要对每个图片设置不同的描述,那么需要编写代码或使用其他工具实现。

在明确知道 alt 内容时,可以用 replace

如果批量替换不同的内容,可以使用正则

mysql 原生 regexp_replace 可以使用


select REGEXP_REPLACE('<img src="/upload/article/images/91.jpg" alt="图片描述都不一样">','(?<=alt=")[^"]+','-'); 
不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/655060
  • 这篇博客也不错, 你可以看下mysql 添加字段前先做判断字段是否存在(处理添加字段重复报错)
  • 除此之外, 这篇博客: 谈谈MySQL查询优化中的 5.4、添加索引 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    (1)索引的建立遵循最左前缀匹配原则。
    (2)尽量考虑在where或order 不要后涉及的列上建立索引。
    (3)建立索引的列必须是一个单独、独立的列,完全“干净”的列。不能存在任何运算。
    (4)多列索引
    ①当出现多个索引做相交操作时(多个AND条件),通常来说一个包含所有相关列的索引要优于多个独立索引;
    ②当出现多个索引做联合操作时(多个OR条件),对结果集的合并、排序等操作需要耗费大量的CPU和内存资源,特别是当其中的某些索引的选择性不高,需要返回合并大量数据时,查询成本更高。所以这种情况下还不如走全表扫描。
    (5)覆盖索引。如果一个索引包含或者说覆盖所有需要查询的字段的值,那么就没有必要再回表查询。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^