⚠️ 重要提醒:操作前务必备份数据库!
任何直接操作数据库的行为都有风险,在进行SQL操作之前,请务必备份您的整个数据库,这是防止误操作导致网站数据丢失的唯一有效方法。

(图片来源网络,侵删)
- 如何备份数据库?
- 登录您的织梦后台。
- 进入【系统】 -> 【数据库备份/还原】。
- 点击【开始备份】,按照提示完成数据库的备份。
最简单直接的全局替换
这种方法适用于将描述中的某个特定词语或短语替换为另一个。
适用场景:
- 将“织梦CMS”全部替换为“DedeCMS”。
- 将过时的公司名称“XX公司”替换为新的“YY集团”。
操作步骤:
-
登录织梦后台,在顶部菜单栏找到并点击【系统】。
(图片来源网络,侵删) -
在左侧菜单中,展开【SQL命令运行工具】,然后点击【SQL命令行工具】。
-
在弹出的页面中,你会看到一个文本框,在这里输入你的SQL替换语句。
SQL语句模板:
UPDATE `dede_archives` SET description = REPLACE(description, '旧内容', '新内容');
dede_archives:这是织梦存储文章等档案的主表,如果你的表前缀不是dede_,请务必修改为你的实际表前缀。description:这是我们要修改的字段名,即文章描述。':你想要被替换掉的文本,用单引号括起来。':你想要替换成的新文本,用单引号括起来。
-
填写并执行:
(图片来源网络,侵删)- 将上面的模板复制到文本框中,并填入你的具体内容。
- 例如,我想把所有描述中的“织梦”替换为“Dede”:
UPDATE `dede_archives` SET description = REPLACE(description, '织梦', 'Dede');
- 确认无误后,点击【查询】或【运行SQL】按钮。
-
查看结果:系统会提示你影响了多少行数据,如果数字和你预期的文章数量差不多,说明操作基本成功。
基于特定条件的精准替换
这种方法更高级,它允许你先筛选出符合条件的文章,然后再对这些文章的描述进行替换,只替换某个栏目下的文章描述。
适用场景:
- 只在“产品中心”栏目下,将“价格面议”替换为“请致电咨询”。
- 包含“活动”的文章的描述。
操作步骤:
-
同样,进入【系统】 -> 【SQL命令运行工具】 -> 【SQL命令行工具】。
-
输入带有
WHERE条件的SQL语句。SQL语句模板:
UPDATE `dede_archives` SET description = REPLACE(description, '旧内容', '新内容') WHERE 条件;
WHERE 条件:这是筛选条件,非常重要。
-
示例:
- 示例1:按栏目ID替换
假设“产品中心”栏目的
ID是5,我们要替换这个栏目下所有文章的描述:UPDATE `dede_archives` SET description = REPLACE(description, '价格面议', '请致电咨询') WHERE typeid = 5;
- 示例2:按标题关键词替换
我们想替换所有标题中包含“促销”一词的文章的描述:
UPDATE `dede_archives` SET description = REPLACE(description, '欢迎选购', '限时特惠中') WHERE title LIKE '%促销%';
LIKE是模糊查询。- 是通配符,代表任意多个字符。
'%促销%'表示“促销”前后可以有任何内容。
- 示例3:按发布时间范围替换
替换2025年1月1日之后发布的文章的描述:
UPDATE `dede_archives` SET description = REPLACE(description, '旧版本', '新版本') WHERE senddate > UNIX_TIMESTAMP('2025-01-01 00:00:00');senddate字段存储的是时间戳。UNIX_TIMESTAMP()函数可以将日期字符串转换为时间戳。
- 示例1:按栏目ID替换
假设“产品中心”栏目的
中自动提取并替换描述
我们希望将文章的摘要或者正文的前N个字符作为新的描述,织梦的描述字段description通常是自动从文章内容中截取的,但有时可能因为各种原因没有正确生成,我们可以通过SQL来手动更新它。
适用场景:
- 文章描述为空,需要从文章内容中自动生成一段摘要。
- 旧描述格式不统一,希望用新的摘要规则(如取正文前200字)重新生成。
操作步骤:
-
进入【系统】 -> 【SQL命令运行工具】 -> 【SQL命令行工具】。
-
使用织梦自带的函数
cn_substr()来截取字符串。SQL语句模板:
UPDATE `dede_archives` SET description = cn_substr(替换前的内容或字段, 截取长度);
-
示例:
- 示例1:用文章内容的前200个字符替换描述
假设文章内容存储在
body字段(通常是HTML内容,可能会很长),我们想用它的纯文本前200个字符作为描述。UPDATE `dede_archives` SET description = cn_substr(body, 200);
- 注意:这种方法会把HTML标签也当作字符截取,可能导致描述中出现
<p>、<img>等标签,虽然织梦在显示时会自动过滤,但数据库里会存着。
- 注意:这种方法会把HTML标签也当作字符截取,可能导致描述中出现
- 示例2:用文章摘要(
description字段本身)的前100个字符更新描述 这可以用来统一描述长度。UPDATE `dede_archives` SET description = cn_substr(description, 100);
- 示例1:用文章内容的前200个字符替换描述
假设文章内容存储在
总结与最佳实践
| 场景 | 推荐方法 | SQL语句示例 |
|---|---|---|
| 全局替换 | 方法一 | UPDATEdede_archivesSET description = REPLACE(description, 'A', 'B'); |
| 按栏目/标题/时间等条件替换 | 方法二 | UPDATEdede_archivesSET description = REPLACE(description, 'A', 'B') WHERE typeid=5; |
操作流程总结:
- 备份数据库(最重要的一步!)。
- 登录织梦后台,进入【系统】->【SQL命令行工具】。
- 根据你的需求,选择合适的SQL语句模板,并修改其中的、、
条件等部分。 - 仔细检查SQL语句,确保表前缀(
dede_)和字段名都正确。 - 点击【运行SQL】执行。
- 查看返回的影响行数,确认操作是否符合预期。
- 到网站前台随机查看几篇文章,确认描述是否已正确更新。
希望这份详细的指南能帮助您顺利完成织梦文章描述的批量替换工作!
