替换SQL Server中的字符串字符

时间:2014-11-07 07:09:12

标签: sql sql-server ssms

如果我有像

这样的字符串
select field1 + N' ' + field2 + N' ' + field3 from table1

如何制作以便我可以更改或替换从第三位到第五位的字符?

我的意思是如果上面的select语句返回一个字符串ABCD EFGH IJKL,那么我想用CD(space)替换*

感谢。

3 个答案:

答案 0 :(得分: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 )

答案 1 :(得分: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

我希望上面的内容很有用

答案 2 :(得分:0)

以这种方式尝试:

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