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

MS SQL Server:如何根据条件将列中的国家数据替换为对应首都

在MS SQL Server中替换国家为对应首都的解决方案

没问题,我来帮你搞定这个需求!在MS SQL Server里把存储国家的列替换成对应首都,分两种常见场景来处理,你可以根据实际情况选择:

场景1:国家数量较少,直接用CASE语句更新

如果需要替换的国家不多,直接用CASE表达式写UPDATE语句最直接,还能避免额外创建表的麻烦。假设你的表名为YourTable,存储国家的列名为Country,示例代码如下:

UPDATE YourTable
SET Country = CASE 
    WHEN Country = 'France' THEN 'Paris'
    WHEN Country = 'Germany' THEN 'Berlin'
    WHEN Country = 'Japan' THEN 'Tokyo'
    -- 在这里继续添加其他国家与首都的映射关系
    ELSE Country -- 保留未匹配到的原始值,避免被改成NULL
END;

小提示:执行UPDATE前,建议先用SELECT语句测试结果是否符合预期:

SELECT 
    Country AS 原始国家,
    CASE 
        WHEN Country = 'France' THEN 'Paris'
        WHEN Country = 'Germany' THEN 'Berlin'
        ELSE Country
    END AS 替换后的首都
FROM YourTable;

场景2:国家数量多或需要频繁维护映射关系

如果要处理的国家很多,或者以后可能需要新增/修改国家-首都的映射,最好创建一个专门的映射表,这样维护起来更灵活。

第一步:创建并填充映射表

-- 创建映射表
CREATE TABLE CountryCapitalMap (
    CountryName VARCHAR(100) PRIMARY KEY, -- 国家名称作为主键,避免重复
    CapitalName VARCHAR(100) NOT NULL
);

-- 插入国家与首都的映射数据
INSERT INTO CountryCapitalMap (CountryName, CapitalName)
VALUES 
    ('France', 'Paris'),
    ('Germany', 'Berlin'),
    ('Japan', 'Tokyo'),
    ('United States', 'Washington D.C.'),
    ('China', 'Beijing');

第二步:通过JOIN更新原表

UPDATE t
SET t.Country = c.CapitalName
FROM YourTable t
JOIN CountryCapitalMap c ON t.Country = c.CountryName;

同样,执行前可以用SELECT验证结果:

SELECT 
    t.Country AS 原始国家,
    c.CapitalName AS 替换后的首都
FROM YourTable t
LEFT JOIN CountryCapitalMap c ON t.Country = c.CountryName;

这种方式的好处是,以后要新增或修改映射,只需要操作CountryCapitalMap表,不用修改UPDATE语句,扩展性更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:10:03