2014-10-16 142 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)