String =“Vishal Hariharan”..将第一个“H”替换为“A”SQL
我有一个场景,我想只替换其他“H”字符中的第一个“H”字符,并保持原样保留。
答案 0 :(得分:2)
Stack Overflow上有许多简单的答案,没有考虑到被搜索的字符在字符串中不存在的情况。在这些情况下,如果字符串中不存在替换字符,则SQL将返回NULL。试试这个:
declare @name varchar(max), @ToReplace varchar(max), @ReplaceWith varchar(max)
set @name = 'Vishal Hariharan'
set @ToReplace = 'H'
set @ReplaceWith = 'A'
select @name
select stuff(@name, charindex(@ToReplace,@name),1, CASE WHEN charindex(@ToReplace,@name) <> 0 THEN @ReplaceWith ELSE @ToReplace END)
CASE
语句只是检查字符串中是否存在字符,如果字符不存在,则它会将匹配的字符替换为自身。
答案 1 :(得分:1)
DECLARE @findChar varchar(max)='H'
DECLARE @RepalceCharacter varchar(max)='A'
DECLARE @OriginText varchar(max)='Vishal Hariharan'
IF (CharIndex(@findChar, @OriginText)<>0)
SELECT Stuff(@OriginText, CharIndex(@findChar, @OriginText), Len(@findChar), @RepalceCharacter)
ELSE
SELECT @OriginText