如何替换sql server中的第n个字符

Imr*_*ain 17 sql sql-server sql-server-2008

我试图替换SQL Server中的第n个字符.我尝试使用它replace():

SELECT REPLACE(ABC,0,1)  FROM XXX
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,所有的零都将替换为一个,但我只想在特定位置更改它,有时该位置可能会发生变化.

lc.*_*lc. 24

您正在寻找STUFF:

select STUFF(ABC, @n, 1, 'X') from XXX
Run Code Online (Sandbox Code Playgroud)

这将@n用一个替换第th个字符X.

从技术上讲,它ABC在位置开始寻找原始字符串@n,删除1字符,然后'X'在该位置插入字符串.


Imr*_*han 20

use stuff STUFF函数将字符串插入另一个字符串.它删除起始位置的第一个字符串中指定长度的字符,然后将第二个字符串插入起始位置的第一个字符串中.

select STUFF(ABC, starting_index, 1, 'X') from XXX
Run Code Online (Sandbox Code Playgroud)

"这里你要替换的int位置"是不会替换任何int的位置,并且该位置将被替换


A_S*_*_Sk 6

使用东西。

STUFF(Column_Name,starting_index,
lenth_ofthestring_to_replace_from_starting_index, character_to_replce)
Run Code Online (Sandbox Code Playgroud)

例子_

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'
Run Code Online (Sandbox Code Playgroud)

检查一下。

 SELECT STUFF(@str,2,25, 'hello'),len(@str)
Run Code Online (Sandbox Code Playgroud)


fun*_*urm 5

你使用STUFF这个:

SELECT STUFF(ABC, 5, 1, '1')
FROM XXX
Run Code Online (Sandbox Code Playgroud)

这将用1替换第5个字符.


Gor*_*off 5

用途stuff():

select stuff(abc, 0, 1, 'a')
Run Code Online (Sandbox Code Playgroud)

这里记录在案.