我正在使用SQL Server 2008,并面临有关字符替换的问题。
如果我使用
SELECT REPLACE(MYWORD,0,1) FROM MYTABLE
它将所有0替换为1,我只想替换最后一个字符,如MYWORD = "ERMN0"
所以它将是MYWORD = "ERMN1"
答案 0 :(得分:12)
使用STUFF
,IMO最终可读性最高:
DECLARE @MyWORD VARCHAR(20) = 'ABCDEF123'
SELECT STUFF(@MyWORD, LEN(@MyWORD), 1, '2')
输出:
ABCDEF122
答案 1 :(得分:3)
您可以使用LEFT
,RIGHT
和CASE
的组合。
您需要使用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”