使用子字符串替换TSQL也可以替换字符串的其他部分

时间:2014-10-16 14:49:42

标签: sql sql-server tsql replace substring

我有一个由一列组成的表,每行有一个100个字符的字符串。添加第二列以保存结果。我需要修改某些修复位置元素并计划执行以下操作:

UPDATE myData
SET newData =  REPLACE(oldData,SUBSTRING(eftnwsfull, 16,2),'OC')

位置16,2的元素是'17'。但是,如果字符串的其他部分(不在位置16,2)恰好是'17',那么也会变为'OC'。

我很难理解这是如何发生的,因为我正在指定替换位置的确切位置。我做错了什么?

2 个答案:

答案 0 :(得分:3)

尝试STUFF

UPDATE myData
SET newData = STUFF(oldData, 16, 2, 'OC')

答案 1 :(得分:0)

以下是两种方法(请测试,因为偏移可能是一次性的)..

SET newdata = SUBSTRING(oldData, 1, 15) + 'OC' + SUBSTRING(oldData, 18, LEN(oldData) - 17)

SET newdata = LEFT(oldData, 15) + 'OC' + RIGHT(oldData, LEN(oldData) - 17)