如何将SQL Server中LIKE匹配到的目标字符串作为更新值?
SQL Server UPDATE语句提取并替换字段值
要实现将符合条件的记录中FIELD2字段替换为FIELD里匹配的AAA 四位数字格式字符串,可以结合PATINDEX和SUBSTRING函数完成,具体写法如下:
第一步:先验证提取逻辑(可选但推荐)
先通过SELECT语句确认提取的目标值是否正确:
SELECT FIELD, -- 提取匹配到的"AAA 四位数字"子串 SUBSTRING(FIELD, PATINDEX('%AAA [0-9][0-9][0-9][0-9]%', FIELD), 8) AS TargetValue, FIELD2 FROM TABLE WHERE FIELD LIKE '%AAA [0-9][0-9][0-9][0-9]%' AND FIELD2 IN ('VALUE2', 'VALUE3', 'VALUE4')
第二步:执行UPDATE操作
确认提取结果正确后,运行UPDATE语句:
UPDATE TABLE SET FIELD2 = SUBSTRING(FIELD, PATINDEX('%AAA [0-9][0-9][0-9][0-9]%', FIELD), 8) WHERE FIELD LIKE '%AAA [0-9][0-9][0-9][0-9]%' AND FIELD2 IN ('VALUE2', 'VALUE3', 'VALUE4')
关键逻辑说明
PATINDEX('%AAA [0-9][0-9][0-9][0-9]%', FIELD):返回FIELD中第一个匹配AAA 四位数字模式的子串起始位置SUBSTRING(FIELD, 起始位置, 8):从起始位置开始截取8个字符(AAA占4位,四位数字占4位,合计8位)
注意:如果FIELD中存在多个符合格式的子串,上述语句只会提取第一个出现的匹配项。
内容的提问来源于stack exchange,提问作者Colt R
相关产品推荐
相关产品推荐

