带有通配符的SQL Replace命令

时间:2015-05-21 18:31:59

标签: sql sql-server replace wildcard

基本上我正在尝试替换括号内的字符串中的所有内容。

例如,'123 [1abc] abc'的字符串将变为'123 [xx] abc'

select replace(string,'[%]','[xx]') as string2 from table1

除非当然不起作用。

括号内的值总是不同的,找到所有个别可能性根本不可行。此外,括号内的某些值也出现在括号内,但我只希望它们在内部更改。

如果有任何不同,我在Microsoft SQL Server中工作。

2 个答案:

答案 0 :(得分:2)

假设只有一个这样的表达式并且方括号只出现一次,你可以使用stuff()来构造字符串:

select stuff(str,
             charindex('[', str) + 1,
             charindex(']', str) - charindex('[', str) - 1,
             'xx')

答案 1 :(得分:0)

你可以用字符串操作来完成它。将字符串的左侧向上放到左括号中,添加' xx'然后从右括号开始添加右侧。

SELECT LEFT(string, CHARINDEX('[', string)) 
       + 'xx' 
       + RIGHT(string, LEN(string) - CHARINDEX(']', string) + 1) AS string2
    FROM table1;
相关问题