Заменить последний символ в SQL Server 2008
Я работаю с SQL server 2008 и сталкиваюсь с проблемой замены символов.
Если я использую
SELECT REPLACE(MYWORD,0,1) FROM MYTABLE
Это заменить все 0 на 1, я просто хочу заменить последний символ как MYWORD = "ERMN0"
так и будет MYWORD = "ERMN1"
6 ответов
используя STUFF
, который, ИМО, в конечном итоге наиболее читаем:
DECLARE @MyWORD VARCHAR(20) = 'ABCDEF123'
SELECT STUFF(@MyWORD, LEN(@MyWORD), 1, '2')
выход:
ABCDEF122
вы можете использовать комбинацию 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
попробуй такое
SELECT SUBSTRING(MYWORD, 1, LEN(MYWORD) - 1) +
REPLACE(SUBSTRING(MYWORD, LEN(MYWORD), LEN(MYWORD)), 0, 1) FROM MYTABLE
попробуйте это.
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
это будет работать
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
это также использовать full для замены букв из end
Он используется для замены символов с конца 1,2 или N
Declare @Name nvarchar(20) = 'Bollywood'
select @Name = REPLACE(@Name, SUBSTRING(@Name, len(@Name) - 1, 2), 'as')
SELECT @Name
вывод "Bollywoas"
- здесь лучшая часть - вы можете восстановить столько символов из последнего, что вам нужно.