TSQL:如何进行子字符串替换?

4

目标:我有一个字符串“1234432144”,我想只用“10”替换前两个“4”,所以我会得到“1231032144”。

在tsql中有没有这样做的方法?

到目前为止,我已经想出了tsql子字符串(substring())函数。

substring('1234432144', 4, 2) 

这段代码中有一个 44,但我要如何在现有字符串中替换它呢?

如果我使用 replace 函数来包裹它,它会替换掉字符串中所有的 44。

你有什么想法吗?

提前感谢您的帮助。


替换仅限于第一个“4”的标准是什么? - gbn
我只是想找到一种方法来替换第一组双4,而不管它的位置,并且不要让它在整个字符串中重复替换。谢谢。 - phill
1个回答

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)

当然,如果要求将第一个4替换为1,第二个4替换为0,而不是将44替换为10,则此方法无法奏效。在这种情况下,您需要两次调用该函数。 - Robin Day

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接