我想更新前两个parameter
之间的子字符串
我想写一个与下面的例子效果相同的查询,johnold
只是一个例子
a= 'parameterjohnoldparameter123parameter'
b='aaa'
结果将是
a= 'parameteraaaparameter123parameter'
我该怎么办?
答案 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)。