2010-03-22 68 views
4

目標:我有字符串「1234432144」我只想用'10'替換前4個,所以我會得到'1231032144'tsql:如何做一個子串替換?

有沒有辦法在tsql中做到這一點?

到目前爲止,我還拿出TSQL子()函數

substring('1234432144', 4, 2) 

其繪製44 ..但是我如何更換現有的字符串中?

如果我在它周圍包裝一個替換函數,它會替換字符串中所有出現的44。

有什麼想法?

在此先感謝。

+0

只更換前2個4的標準是什麼? – gbn 2010-03-22 16:35:34

+0

我只是想要一種方法來替換第一組雙4無論位置,而不是重複整個字符串的替換。謝謝 – phill 2010-03-22 19:55:54

回答

5

編輯與paremeterised版本。

DECLARE @myStr VARCHAR(50) 
DECLARE @findStr VARCHAR(50) 
DECLARE @replaceStr VARCHAR(50) 

SET @myStr = '1234432144' 
SET @findStr = '44' 
SET @replaceStr = '10' 

SELECT STUFF(@myStr, CHARINDEX(@findStr, @myStr), LEN(@findStr), @replaceStr) 
+0

非常好。爲什麼我沒有想到... – gbn 2010-03-22 16:42:41

+0

當然,如果要求將第一個4替換爲1,將第二個替換爲0,而不是將其替換爲44,則它不會工作。在這種情況下,您需要調用功能兩次。 – 2010-03-22 16:45:17

+0

@gbn:因爲它的星期一:) – 2010-03-22 16:46:32

相關問題