我正在尝试替换SQL Server中的第n个字符。 我尝试使用replace()
函数:
SELECT REPLACE(ABC,0,1) FROM XXX
在上面的代码中,所有的零将被替换为一,但我只想在特定的位置进行更改,有时这个位置可能会改变。在上述代码中,所有的零都将被替换为一,但我只想在特定位置进行更改,有时该位置可能会发生变化。
我正在尝试替换SQL Server中的第n个字符。 我尝试使用replace()
函数:
SELECT REPLACE(ABC,0,1) FROM XXX
在上面的代码中,所有的零将被替换为一,但我只想在特定的位置进行更改,有时这个位置可能会改变。使用STUFF函数可以将一个字符串插入到另一个字符串中,它会在第一个字符串的指定起始位置删除一定长度的字符,然后将第二个字符串插入到第一个字符串的起始位置。
select STUFF(ABC, starting_index, 1, 'X') from XXX
"Here your int position to replace" 是要替换的位置,只需将其替换为任何整数即可替换该位置。 注意:(感谢pcnate提供建议) starting_index是您要替换的整数位置。
你正在寻找 STUFF
:
select STUFF(ABC, @n, 1, 'X') from XXX
这将用X
替换第@n
个字符。
技术上,它会在原始字符串中的列ABC
处从位置@n
开始查找,删除1
个字符,然后在该位置插入字符串'X'
。
SET @MY_VARIABLE=STUFF(@MY_VARIABLE,14,1,'h');
- Pierre CSTUFF(Column_Name,starting_index,
lenth_ofthestring_to_replace_from_starting_index, character_to_replce)
示例_
DECLARE @str varchar(100) = '123456789'
select @str
SELECT STUFF(@str,2,1, 'hello')
-- want to replece 1 charter starting from 2nd position with the string 'hello'
请检查这个。
SELECT STUFF(@str,2,25, 'hello'),len(@str)
我有一个带有PartDesc
列的表格,如下所示,我需要删除从索引1开始直到-
字符的字符。
PartDesc |
---|
OPERA_BLUE-ALTROZ DCA XZ 1.2 RTN BS6 |
ATLAS_BLACK-NEXON XZ+ DK 1.2 RTN BS6 |
DAYTONA_GREY-PUNCH ADV 1.2P BS6 MT RT |
ARCADE_GREY-ALTROZ XZ+ 1.2 RTN BS6 |
CALGARY_WHTE-NEXON XM(S) 1.2 RTN BS6 |
在这里,使用以下查询后,我得到了期望的结果:
Select PATINDEX('%-%',PartDesc),Stuff(PartDesc,1,PATINDEX('%-%',PartDesc),'' ),* from #temp
lenth_ofthestring_to_replace_from_starting_index
或者starting_index
来清楚地表明它应该是一个数字而不是字符串。整个句子来描述一个字符串只会使答案变得臃肿。 - pcnate