如何replaceSQL Server表列中的string

我有一个引用path(UNC或其他)的表(SQL服务器),但现在path将会改变。 在path列中,我有很多logging,我需要更改path的一部分,但不是整个path。 而且我需要在每个logging中将相同的string更改为新的string。

我怎样才能做到这一点简单的更新?

这很简单:

update my_table set path = replace(path, 'oldstring', 'newstring') 
 UPDATE [table] SET [column] = REPLACE([column], '/foo/', '/bar/') 

我试过以上,但没有得到正确的结果。 以下是:

 update table set path = replace(path, 'oldstring', 'newstring') where path = 'oldstring' 
 UPDATE CustomReports_Ta SET vchFilter = REPLACE(CAST(vchFilter AS nvarchar(max)), '\\Ingl-report\Templates', 'C:\Customer_Templates') where CAST(vchFilter AS nvarchar(max)) LIKE '%\\Ingl-report\Templates%' 

没有CASTfunction,我得到一个错误

参数数据typesntextreplace函数的参数1无效。

你可以使用这个查询

 update table_name set column_name = replace (column_name , 'oldstring' ,'newstring') where column_name like 'oldstring%' 
 select replace(ImagePath, '~/', '../') as NewImagePath from tblMyTable 

其中“ImagePath”是我的专栏名称。
“NewImagePath”是temporry列名称insted的“ImagePath”
“〜/”是我当前的string(旧string)
“../”是我需要的string(新string)
“tblMyTable”是我在数据库中的表。

如果目标列types不是varchar / nvarchar类似文本 ,则需要将列值转换为string,然后将其转换为:

 update URL_TABLE set Parameters = REPLACE ( cast(Parameters as varchar(max)), 'india', 'bharat') where URL_ID='150721_013359670' 

您也可以在运行时replace电子邮件模板的大文本,这是一个简单的例子。

  DECLARE @xml NVARCHAR(MAX) SET @xml = CAST((SELECT [column] AS 'td','', ,[StartDate] AS 'td' FROM [table] FOR XML PATH('tr'), ELEMENTS ) AS NVARCHAR(MAX)) select REPLACE((EmailTemplate), '[@xml]', @xml) as Newtemplate FROM [dbo].[template] where id = 1 

所有的答案都很好,但我只想给你一个很好的例子

 select replace('this value from table', 'table', 'table but updated') 

此SQL语句将用第三个参数replace给定语句(第一个参数)中的“table”(第二个参数)这个单词的存在

初始值是this value from table但是在执行replace函数之后,它将是this value from table but updated

这是一个真实的例子

 UPDATE publication SET doi = replace(doi, '10.7440/perifrasis', '10.25025/perifrasis') WHERE doi like '10.7440/perifrasis%' 

例如,如果我们有这个价值

 10.7440/perifrasis.2010.1.issue-1 

它会变成

 10.25025/perifrasis.2010.1.issue-1 

希望这给你更好的可视化