我正在使用SQL Server 2008,并面临有关字符替换的问题。替换SQL Server 2008中的最后一个字符
如果我使用
SELECT REPLACE(MYWORD,0,1) FROM MYTABLE
它更换所有0到1,我只是想替换最后一个字符像MYWORD = "ERMN0"
所以这将是MYWORD = "ERMN1"
我正在使用SQL Server 2008,并面临有关字符替换的问题。替换SQL Server 2008中的最后一个字符
如果我使用
SELECT REPLACE(MYWORD,0,1) FROM MYTABLE
它更换所有0到1,我只是想替换最后一个字符像MYWORD = "ERMN0"
所以这将是MYWORD = "ERMN1"
使用STUFF
,其中,IMO,最终被最可读:
DECLARE @MyWORD VARCHAR(20) = 'ABCDEF123'
SELECT STUFF(@MyWORD, LEN(@MyWORD), 1, '2')
输出:
ABCDEF122
试试这个。
SELECT LEFT('ERMN0', Len('ERMN0')-1)
+ Replace(RIGHT('ERMN0', 1), 0, 1)
OUTPUT:ERMN1
在你的情况
SELECT LEFT(MYWORD, Len(MYWORD)-1)
+ Replace(RIGHT(MYWORD, 1), 0, 1) as [REPLACED] FROM MYTABLE
这将工作
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
试试这个
SELECT SUBSTRING(MYWORD, 1, LEN(MYWORD) - 1) +
REPLACE(SUBSTRING(MYWORD, LEN(MYWORD), LEN(MYWORD)), 0, 1) FROM MYTABLE
您可以使用的LEFT
,RIGHT
和CASE
组合。
您需要使用CASE
来检查最多RIGHT
字符是否为0
,并将其替换为1
。最后,将它与MYWORD
字符串的LEFT
部分(与最后一个字符分离后)结合起来。
但是,根据您的要求,它可能有一个缺点。 当有一个字以10
结尾时,它也会被替换。
SELECT LEFT(MYWORD,LEN(MYWORD)-1) + CASE RIGHT(MYWORD,1) WHEN '0' THEN '1' ELSE RIGHT(MYWORD,1) END
这也使用完全从端代替字母
它用于替换从末端1,2或N的字符
Declare @Name nvarchar(20) = 'Bollywood'
select @Name = REPLACE(@Name, SUBSTRING(@Name, len(@Name) - 1, 2), 'as')
SELECT @Name
输出为“Bollywoas”