我正在使用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」