2010-03-22 4 views
4

цели: У меня есть строка «1234432144» Я хочу только заменить первые 2 4-й с «10», так что я хотел бы получить «1231032144»tsql: как выполнить замену подстроки?

Есть ли способ сделать это в TSQL?

до сих пор я пришел с функцией

substring('1234432144', 4, 2) 

, который рисует 44 TSQL подстроки() .. однако как я заменить его в рамках существующей строки?

Если я обернуваю функцию замены вокруг него, он заменяет все вхождения 44 в строке.

любые идеи?

благодарит заранее.

+0

Каковы критерии для замены только первых 2 4s? – gbn

+0

Мне просто нужен способ заменить первый набор двойных 4 независимо от положения и не повторять его замену по всей строке. спасибо – phill

ответ

5

Отредактировано с измененной версией.

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

+0

Конечно, он не будет работать, если требование состоит в том, чтобы заменить первые 4 на 1, а второй 4 на 0, а не заменить 44 на 10. В этом случае вам нужно будет позвонить дважды. –

+0

@gbn: потому что его понедельник :) –

Смежные вопросы