2014-10-16 115 views
2

我有一个表由一列组成,每列有100个字符的字符串。第二列添加到结果。我需要修改某些固定位置元素和计划执行以下操作:TSQL替换使用子串替换替换字符串的其他部分

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

的元件在16,2位置为“17”。但是,如果字符串的其他部分(不在位置16,2)碰巧是'17',也会变成'OC'。

我很困惑,因为我指定了替换的确切位置。我究竟做错了什么?

+0

那是预料之中的; REPLACE替换第一个参数中的任何内容,而不是第二个参数中的任何内容,第三个 – 2014-10-16 14:54:09

+0

我的印象是SUBSTRING会“过滤”它。好的,还有其他方法可以做到吗? – ComfortablyNumb 2014-10-16 14:58:35

+2

你能澄清你想要取代什么吗? – 2014-10-16 15:01:02

回答

3

尝试STUFF

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

干杯STUFF完美地完成了这项工作。谢谢 – ComfortablyNumb 2014-10-16 15:21:16

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)