2015-02-23 16 views
10

Próbuję zastąpić n-tą znak w SQL Server. Starałem się go za pomocą replace():Jak zamienić n-ty znak na serwerze sql

SELECT REPLACE(ABC,0,1) FROM XXX 

W powyższym kodzie zerami zostaną zastąpione jednym, ale chcę tylko, aby zmienić go w określonej pozycji, a czasami, że pozycja może się zmienić.

Odpowiedz

11

Użyj rzeczy Funkcja STUFF wstawia ciąg do innego ciągu. Usuwa określoną długość znaków w pierwszym ciągu w pozycji początkowej, a następnie wstawia drugi ciąg do pierwszego ciągu w pozycji początkowej.

select STUFF(ABC, "Here your int position to replace", 1, 'X') from XXX 

no i że pozycja zostanie zastąpiona

3

użyć STUFF na to:

SELECT STUFF(ABC, 5, 1, '1') 
FROM XXX 

ten zastąpiłby 5th znak z 1.

3

użytkowania stuff():

select stuff(abc, 0, 1, 'a') 

To jest udokumentowane here.

14

Szukacie STUFF:

select STUFF(ABC, @n, 1, 'X') from XXX 

byłoby to zastąpienie znaku @n th z X.

Technicznie dąży do oryginalnego napisu na kolumnie ABC zaczynając od pozycji @n, usuwa 1 znak, a następnie wstawia ciąg 'X' w tej pozycji.

2

Zastosowanie Stuff „Oto Twój int pozycja zastąpić” to pozycja nie tylko zastąpić dowolny int.

STUFF(Column_Name,starting_index, 
lenth_ofthestring_to_replace_from_starting_index, character_to_replce) 

Example_

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' 

sprawdzić.

SELECT STUFF(@str,2,25, 'hello'),len(@str) 
Powiązane problemy