Как заменить n-й символ на сервере sql
Я пытаюсь заменить n-й символ в SQL Server. Я попытался использовать его с помощью replace()
:
SELECT REPLACE(ABC,0,1) FROM XXX
В приведенном выше коде все нули будут заменены на один, но я хочу только изменить его в определенной позиции, и иногда эта позиция может измениться.
Ответы
Ответ 1
использовать вещи Функция STUFF вставляет строку в другую строку. Он удаляет указанную длину символов в первой строке в начальной позиции, а затем вставляет вторую строку в первую строку в начальной позиции.
select STUFF(ABC, starting_index, 1, 'X') from XXX
"Здесь ваша позиция int для замены" - это позиция no, которая просто заменяется на любую int no, и эта позиция будет заменена. Примечание: (Спасибо https://stackoverflow.com/users/3851647/pcnate За предложение) заменить.
Ответ 2
Вы ищете STUFF
:
select STUFF(ABC, @n, 1, 'X') from XXX
Это заменит символ @n
th на X
.
Технически он ищет исходную строку в столбце ABC
, начиная с позиции @n
, удаляет символ 1
, а затем вставляет строку 'X'
в эту позицию.
Ответ 3
Вы используете STUFF
для этого:
SELECT STUFF(ABC, 5, 1, '1')
FROM XXX
Это заменит 5-й символ 1.
Ответ 4
Используйте stuff()
:
select stuff(abc, 0, 1, 'a')
Это задокументировано здесь.
Ответ 5
Использовать материал.
STUFF(Column_Name,starting_index,
lenth_ofthestring_to_replace_from_starting_index, character_to_replce)
Пример _
DECLARE @str varchar(100) = '123456789'
select @str
SELECT STUFF(@str,2,1, 'hello')
-- want to replece 1 charter starting from 2nd position with the string 'hello'
Проверьте это.
SELECT STUFF(@str,2,25, 'hello'),len(@str)