2014-10-30 111 views

回答

6

使用STUFF,其中,IMO,最終被最可讀:

DECLARE @MyWORD VARCHAR(20) = 'ABCDEF123' 

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

輸出:

ABCDEF122 
1

試試這個。

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 
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 
1

試試這個

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

您可以使用的LEFTRIGHTCASE組合。
您需要使用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

這也使用完全從端代替字母

它用於替換從末端1,2或N的字符

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

輸出爲「Bollywoas」

  • 這裏最好的部分是你可以從你最後需要repalce儘可能多的字符。
相關問題