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的位置,并且该位置将被替换
使用东西。
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)
你使用STUFF
这个:
SELECT STUFF(ABC, 5, 1, '1')
FROM XXX
Run Code Online (Sandbox Code Playgroud)
这将用1替换第5个字符.