Как заменить 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)