替换SQL Server 2008中的最后一个字符

时间:2014-10-30 07:10:38

标签: sql sql-server sql-server-2008

我正在使用SQL Server 2008,并面临有关字符替换的问题。

如果我使用

SELECT REPLACE(MYWORD,0,1) FROM MYTABLE

它将所有0替换为1,我只想替换最后一个字符,如MYWORD = "ERMN0"所以它将是MYWORD = "ERMN1"

6 个答案:

答案 0 :(得分:12)

使用STUFF,IMO最终可读性最高:

DECLARE @MyWORD VARCHAR(20) = 'ABCDEF123'

SELECT STUFF(@MyWORD, LEN(@MyWORD), 1, '2')

输出:

ABCDEF122

答案 1 :(得分:3)

您可以使用LEFTRIGHTCASE的组合。
您需要使用CASE检查RIGHT个字符是否为0是否为1,并将其替换为LEFT。最后,将它与MYWORD字符串的10部分(在与最后一个字符分开后)组合。

但是,根据您的要求,它可能有一个缺点。 当有一个以SELECT LEFT(MYWORD,LEN(MYWORD)-1) + CASE RIGHT(MYWORD,1) WHEN '0' THEN '1' ELSE RIGHT(MYWORD,1) END 结尾的单词时,它也会被替换。

{{1}}

答案 2 :(得分:2)

试试这个。

SELECT LEFT('ERMN0', Len('ERMN0')-1)
       + Replace(RIGHT('ERMN0', 1), 0, 1) 

输出:ERMN1

在你的情况下

SELECT LEFT(MYWORD, Len(MYWORD)-1)
       + Replace(RIGHT(MYWORD, 1), 0, 1) as [REPLACED] FROM MYTABLE

答案 3 :(得分:1)

这将有效

SELECT LEFT ('ERMN0' , Len('ERMN0') -1 ) + REPLACE(Right('ERMN0', 1), '0','1')

或者在你的情况下

SELECT LEFT (MYWORD , Len(MYWORD) -1 ) + REPLACE(Right(MYWORD, 1), '0','1') AS MYWORD FROM MYTABLE

答案 4 :(得分:1)

试试这个

SELECT SUBSTRING(MYWORD, 1, LEN(MYWORD) - 1) +
REPLACE(SUBSTRING(MYWORD, LEN(MYWORD), LEN(MYWORD)), 0, 1) FROM MYTABLE

答案 5 :(得分:1)

这也是用来替换结尾的字母

用于替换结束1,2或N

中的字符
 Declare @Name nvarchar(20) = 'Bollywood' 
select @Name = REPLACE(@Name, SUBSTRING(@Name, len(@Name) - 1, 2), 'as') 
SELECT @Name

输出是“Bollywoas”

  • 这里最好的部分是你可以从最后需要的那个时候重新获得许多角色。