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

如何编写T-SQL脚本批量更新表中头衔字段的指定内容?

T-SQL批量更新头衔字段的实现方法

单个头衔替换(以Mr为例)

如果只需要替换单个头衔,比如把开头的Mr 替换成Mr. ,可以用UPDATE结合REPLACE,并通过WHERE限定只匹配开头带该头衔的记录,避免误替换内容中间的相同字符:

-- 先执行查询确认更新结果
SELECT 
    TitleField AS 原字段值,
    REPLACE(TitleField, 'Mr ', 'Mr. ') AS 更新后字段值
FROM YourTableName
WHERE TitleField LIKE 'Mr %';

-- 确认无误后执行更新
UPDATE YourTableName
SET TitleField = REPLACE(TitleField, 'Mr ', 'Mr. ')
WHERE TitleField LIKE 'Mr %';

多个头衔批量替换

如果需要处理多个头衔(比如Mr→Mr.、Mrs→Mrs.、Ms→Ms.、Dr→Dr.等),有两种常用方式:

方法1:嵌套REPLACE(适合少量头衔)

直接嵌套多个REPLACE函数,同时用WHERE过滤所有需要更新的记录:

-- 测试查询
SELECT 
    TitleField AS 原字段值,
    REPLACE(
        REPLACE(
            REPLACE(
                REPLACE(TitleField, 'Mr ', 'Mr. '), 
                'Mrs ', 'Mrs. '), 
            'Ms ', 'Ms. '), 
        'Dr ', 'Dr. '
    ) AS 更新后字段值
FROM YourTableName
WHERE TitleField LIKE 'Mr %' 
   OR TitleField LIKE 'Mrs %' 
   OR TitleField LIKE 'Ms %'
   OR TitleField LIKE 'Dr %';

-- 执行更新
UPDATE YourTableName
SET TitleField = REPLACE(
        REPLACE(
            REPLACE(
                REPLACE(TitleField, 'Mr ', 'Mr. '), 
                'Mrs ', 'Mrs. '), 
            'Ms ', 'Ms. '), 
        'Dr ', 'Dr. '
    )
WHERE TitleField LIKE 'Mr %' 
   OR TitleField LIKE 'Mrs %' 
   OR TitleField LIKE 'Ms %'
   OR TitleField LIKE 'Dr %';

方法2:映射表JOIN更新(适合多头衔,易维护)

先创建一个存储头衔替换规则的临时表/表变量,再通过JOIN关联原表执行更新,这种方式新增或修改替换规则只需调整映射表内容,更灵活:

-- 定义头衔替换映射
DECLARE @TitleMap TABLE (OldTitle VARCHAR(20), NewTitle VARCHAR(20))
INSERT INTO @TitleMap VALUES
('Mr ', 'Mr. '),
('Mrs ', 'Mrs. '),
('Ms ', 'Ms. '),
('Dr ', 'Dr. '),
('Prof ', 'Prof. ');

-- 测试查询
SELECT 
    t.TitleField AS 原字段值,
    REPLACE(t.TitleField, m.OldTitle, m.NewTitle) AS 更新后字段值
FROM YourTableName t
JOIN @TitleMap m ON t.TitleField LIKE m.OldTitle + '%';

-- 执行更新
UPDATE t
SET t.TitleField = REPLACE(t.TitleField, m.OldTitle, m.NewTitle)
FROM YourTableName t
JOIN @TitleMap m ON t.TitleField LIKE m.OldTitle + '%';

注意事项

  • 始终先执行SELECT测试更新结果,确认无误后再执行UPDATE,避免误操作。
  • 如果头衔与姓名之间可能存在多个空格,可以用PATINDEX处理,比如将LIKE m.OldTitle + '%'替换为PATINDEX('^' + m.OldTitle + '%', t.TitleField) = 1,确保只匹配开头的头衔。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 20:20:47