2014-12-18 2 views
2

Я хочу заменить символ в позиции N в строке. Это мой запрос:Заменить символ в позиции N в строке

SELECT code FROM tablecodes 

Результат 3 строки:

AXGETYTRTFYZUFYZFFFDIZEG 
GFYZUFYZFAXFCDIZAX 
ZUFYZGEFYFAXFFIXZRA 

Я не могу понять, как заменить последний «Z» символ в каждой строке с «A». Я хочу, чтобы результат выглядел так:

AXGETYTRTFYZUFYZFFFDIAEG 
GFYZUFYZFAXFCDIAAX 
ZUFYZGEFYFAXFFIXARA 

«Z» символ всегда находится в том же положении (длина строки - 3)

Любые предложения? Спасибо.

ответ

2

Использование Stuff Функция

Пример:

SELECT Stuff('AXGETYTRTFYZUFYZFFFDIZEG', Len('AXGETYTRTFYZUFYZFFFDIZEG') - 2, 1, 'A') 

Select запрос должен быть как

Select Stuff(code, Len(code) - 2, 1, 'A') 
0

Несколько способов вы можете сделать это, один из способов будет:

http://sqlfiddle.com/#!6/af25d/2

select left(code, len(code)-3) + 'A' + right(code, 2) 
from tableCodes 

примечание это не делает какой-либо проверки, что строка достаточно долго, чтобы выполнять операции, - так что будьте осторожны.

не был точно уверен, что если бы вы «всегда» есть Z как третий последний символ в строке, так что если вам нужно проверить, что дополнительно перед сделать замену можно сделать:

select 
    CASE WHEN SUBSTRING(code, len(code)-2, 1) = 'Z' 
     THEN left(code, len(code)-3) + 'A' + right(code, 2) 
     ELSE code 
    end AS code 
from tableCodes 
1

заменить любой символ в определенной позиции, вы можете использовать функцию вещи

SELECT STUFF('XYZABC', CHARINDEX('A', 'XYZABC'), 1, '#') 

в соответствии с вашим вопросом здесь является решение.

Смежные вопросы