如何替换字符串的一部分

时间:2013-12-20 15:28:16

标签: sql-server

我想更新前两个parameter之间的子字符串 我想写一个与下面的例子效果相同的查询,johnold只是一个例子

a= 'parameterjohnoldparameter123parameter'
b='aaa'

结果将是

a= 'parameteraaaparameter123parameter'

我该怎么办?

5 个答案:

答案 0 :(得分:3)

你可以把它塞进那里。

declare @a varchar(30)
declare @b varchar(30)

set @a = 'parameterjohnoldparameter123'
set @b = 'aaa'

select stuff(@a, 10, 7, @b)
-- or do a search for the second parameter string
select stuff(@a, 10, charindex('parameter', @a, 10) - 10, @b)

答案 1 :(得分:1)

我想你正在寻找:

SET a = REPLACE(a, 'johnold', b)

但是我们怎么知道你要在第一个字符串中替换的字符串部分是什么?我刚刚根据你的例子猜到了。

答案 2 :(得分:0)

要更改单个表格

 UPDATE `table_name`
 SET `field_name` = replace(same_field_name, 'unwanted_text', 'wanted_text')

答案 3 :(得分:0)

来自:http://technet.microsoft.com/en-us/library/ms186862.aspx

REPLACE( string_expression , string_pattern , string_replacement )

示例:

SELECT REPLACE('Hello World', 'Hello', 'Goodbye Cruel')
GO

答案 4 :(得分:0)

为避免使用固定长度或搜索参数,您可以使用:

declare @a varchar(max),@b varchar(max),@c varchar(max)

set @a = 'parameterjohnoldparameter123parameter' --original row
set @b = 'aaa' --value to insert
set @c = 'parameter' --value to insert after it

select stuff(@a, LEN(@c)+1, charindex(@c, @a, LEN(@c)+1) - LEN(@c)-1, @b)

甚至在选择之前计算一次LEN(@c)。