如何在Oracle中替换表列大文本内容内的指定字符串
错误原因
你编写的SQL中REPLACE函数第一个参数传入了固定字符串'words = 20',而非要操作的字段名,等于直接把desc字段的所有值都覆盖为替换后的固定结果Alpha = 20,因此丢失了字段中原有的其他内容。
正确写法
-- 注意将「你的表名」替换为实际业务表的名称 UPDATE 你的表名 SET `desc` = REPLACE(`desc`, 'words = 20', 'Alpha = 20') -- 可选WHERE条件:仅更新包含目标子串的行,减少无效操作 WHERE `desc` LIKE '%words = 20%';
说明
REPLACE函数第一个参数传入字段名`desc`,会逐行扫描该字段的完整内容,仅替换匹配到的words = 20片段,其余内容完整保留desc是SQL的保留关键字,因此用反引号包裹避免语法报错:如果使用SQL Server可替换为方括号[desc],Oracle可替换为双引号"desc"- 建议执行更新前先运行查询验证替换效果,避免误操作:
SELECT `desc` AS 原始内容, REPLACE(`desc`, 'words = 20', 'Alpha = 20') AS 替换后内容 FROM 你的表名;
内容的提问来源于stack exchange,提问作者DirWolf
相关产品推荐
相关产品推荐

