SQL批量更新符合指定条件行的zip_code字段最后一位为0
城市表邮编批量更新实现
核心更新SQL
UPDATE city SET zip_code = CAST( TRUNC(CAST(zip_code AS INT) / 10, 0) * 10 AS VARCHAR(20) ) WHERE MOD(CAST(zip_code AS INT), 10) <> 0;
逻辑说明
- 筛选规则完全复用你提供的判断条件:仅更新
zip_code转整数后对10取模结果不等于0的行,也就是最后一位非0的邮编记录 - 值转换逻辑:先把字符串类型的邮编转为整数,通过截断取整去掉最后一位数字,再乘以10把个位替换为0,最后转回字符串类型,和原表列的存储类型匹配,避免类型不兼容报错
- 结果匹配:处理后的值和你给出的预期结果完全一致,比如原邮编
75001会被更新为75000,97416会被更新为97410
执行更新操作前,建议先运行原有筛选SELECT语句校验命中的记录范围,确认待更新数据符合预期后再执行UPDATE,避免误修改。
内容的提问来源于stack exchange,提问作者Sido4odus
相关产品推荐
相关产品推荐

