2014-11-07 3 views
0

Если у меня есть строка, какЗаменить символы строки в SQL Server

select field1 + N' ' + field2 + N' ' + field3 from table1 

, как сделать так, чтобы я мог изменить или заменить символы, начиная с третьего места на пятое?

Я имею в виду, если выше оператор выбора возвращает строку ABCD EFGH IJKL, то я хочу, чтобы заменить CD(space) с *

Спасибо.

+2

попробовать используя функцию 'stuff' –

+0

Вы можете использовать либо функцию Stuff, либо функцию replace. – knkarthick24

+0

замените место, включая компакт-диск или просто пространство? – TheProvost

ответ

1

Используйте функцию вещи:

SELECT STUFF('ABCD EFGH IJKL', 3, 3, '*'); 

select STUFF(field1 + N' ' + field2 + N' ' + field3, 3, 3, '*') from table1 

Синтаксис:

STUFF (character_expression , start , length , replaceWith_expression) 
0

Попробуйте так:

select replace(field1 + N' ' + field2 + N' ' + field3, 'CD ', '*') from 
table1 
+0

Привет, Это работает только в том случае, если мы точно знаем, какая строка у нас есть, но если это не так? – AYETY

1

Я чувствую функция STUFF это лучший способ пойти об этом.

Ниже приведен небольшой пример того, как я бы подойти к той же

CREATE TABLE TESTDATA 
(
    DATA NVARCHAR(MAX), 
    DATA1 NVARCHAR(MAX), 
    DATA2 NVARCHAR(MAX) 
) 

INSERT INTO TESTDATA VALUES('ABCD','HGHG','HGFD') 
INSERT INTO TESTDATA VALUES('HHGG','ADFS', 'ERET') 
INSERT INTO TESTDATA VALUES('JKJK','GGHG', 'TRED') 

DECLARE @DATA TABLE(DATA VARCHAR(100)) 
INSERT INTO @DATA select STUFF(DATA + N' ',3,3,'*') + DATA1 + N' ' + DATA2 from TESTDATA 
SELECT * FROM @DATA 

Результат для такой же будет,

AB*HGHG HGFD 
HH*ADFS ERET 
JK*GGHG TRED 

Я надеюсь, что выше было полезно

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