2014-10-30 4 views
5

Я работаю с SQL Server 2008 и сталкиваюсь с проблемой замены символов.Заменить последний символ в SQL Server 2008

Если я использую

SELECT REPLACE(MYWORD,0,1) FROM MYTABLE 

Оно заменяющий все 0 в 1, я просто хочу, чтобы заменить последний символ Like MYWORD = "ERMN0" так будет MYWORD = "ERMN1"

ответ

6

использованием STUFF, который, ИМО, заканчивается тем, что наиболее читаемыми:

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) 

ВЫВОД: 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

Вы можете использовать комбинацию из 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

это также использовать полный заменить письма от конца

Он используется для замены символов с конца 1,2 или N

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

выход «Bollywoas»

  • Здесь лучшая часть вы можете Repalce столько персонаж из прошлого вам нужно.
Смежные вопросы