You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Navicat中用SQL批量替换列中特定文本(UID改id)

解决SQL文本替换:将URL参数UID替换为id,保留数字内容

通用高效解决方案(多数数据库适用)

如果仅需把文本中所有UID字符串替换为id,直接使用SQL内置的REPLACE函数即可,该方法性能优异,适合处理20万条量级的批量更新:

UPDATE 你的表名 SET 目标列名 = REPLACE(目标列名, 'UID', 'id');

这条语句会遍历目标列所有内容,将每一处UID替换为id,完全匹配你的需求(例如3PYTW2X?UID=5493139会自动转为3PYTW2X?id=5493139)。

精准替换(避免误改其他位置的UID)

如果列中存在非URL参数格式的UID字符串,可通过正则替换精准匹配?UID=并替换为?id=:

MySQL 8.0+ / MariaDB

UPDATE 你的表名 SET 目标列名 = REGEXP_REPLACE(目标列名, '\\?UID=', '?id=');

SQL Server 2017+

UPDATE 你的表名 SET 目标列名 = REPLACE(目标列名, '?UID=', '?id=');

Oracle 11g+

UPDATE 你的表名 SET 目标列名 = REGEXP_REPLACE(目标列名, '\?UID=', '?id=');

关键注意事项

  • 执行更新前必须备份数据,20万条记录的批量操作出错后恢复成本极高。
  • 先执行查询验证替换效果,确认无误后再执行更新:
    -- MySQL/MariaDB
    SELECT 目标列名, REPLACE(目标列名, 'UID', 'id') AS 替换后内容 FROM 你的表名 LIMIT 10;
    
    -- SQL Server
    SELECT TOP 10 目标列名, REPLACE(目标列名, 'UID', 'id') AS 替换后内容 FROM 你的表名;
    
    -- Oracle
    SELECT 目标列名, REPLACE(目标列名, 'UID', 'id') AS 替换后内容 FROM 你的表名 WHERE ROWNUM <= 10;
    
  • 若数据库支持事务,可先执行更新,验证后再提交,出错直接回滚。

内容的提问来源于stack exchange,提问作者Kyle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 04:45:32