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

SQL Server批量更新地址记录:将‘SR’替换为‘State Route’

解决SQL Server中地址字段替换'SR'为'State Route'的问题

错误原因分析

你之前的问题出在对REPLACE函数的误解:REPLACE不支持%通配符,它仅做精确子串匹配替换。如果你错误地将更新语句写成类似SET address = '% State Route %',自然会把整个列的内容替换成这个固定字符串。

正确解决方案

根据你的数据场景,提供几种适配SQL Server的实现方式:

1. 精确匹配带空格的'SR'(最基础场景)

如果你的数据中'SR'前后始终有空格,最初的REPLACE语句是有效的,建议加上WHERE条件过滤不需要更新的行,提升效率:

UPDATE sites
SET address = REPLACE(address, ' SR ', ' State Route ')
WHERE address LIKE '% SR %';

2. 正则匹配独立的'SR'(SQL Server 2017及以上版本)

如果需要更灵活的匹配(比如'SR'前后可能无空格、或需确保替换独立单词),使用REGEXP_REPLACE(和你之前在Oracle中使用的正则替换逻辑一致):

UPDATE sites
SET address = REGEXP_REPLACE(address, '\bSR\b', 'State Route')
WHERE address LIKE '%SR%';

其中\b是单词边界,确保只替换单独的'SR',避免误替换包含'SR'的其他字符串(如'SR123A')。

3. 低版本SQL Server兼容方案(无正则支持)

如果你的SQL Server版本低于2017,可使用CHARINDEX定位'SR'位置,再用STUFF完成替换:

UPDATE sites
SET address = STUFF(address, CHARINDEX(' SR ', address), 3, ' State Route ')
WHERE CHARINDEX(' SR ', address) > 0;

这里3是' SR '的字符长度,STUFF函数会从找到的位置开始,替换3个字符为目标字符串' State Route '。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 00:42:17