如何替换SQL Server表列中的字符串

我有一个表(SQL Sever),它引用路径(UNC或其他),但现在路径将会改变。

在路径列中,我有许多记录,我只需要改变路径的一部分,而不是整个路径。我需要在每条记录中,将相同的字符串更改为新的字符串。

我如何用一个简单的update来做到这一点?

861938 次浏览

很简单:

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%'

没有CAST函数,我得到了一个错误

参数数据类型ntext对于replace函数的参数1无效。

如果目标列类型不是varchar/nvarchar,比如文本,我们需要将列值转换为字符串,然后将其转换为:

update URL_TABLE
set Parameters = REPLACE ( cast(Parameters as varchar(max)), 'india', 'bharat')
where URL_ID='150721_013359670'
select replace(ImagePath, '~/', '../') as NewImagePath from tblMyTable
“ImagePath”是我的列名。
"NewImagePath"是临时的 列名称而不是"ImagePath"
"~/"是我的当前字符串。(老
"../"是我需要的字符串。(新字符串)
“tblMyTable”是我在数据库中的表。
< / p >

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

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

您可以使用这个查询

update table_name set column_name = replace (column_name , 'oldstring' ,'newstring') where column_name like 'oldstring%'

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

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

此SQL语句将替换单词“table”的存在 (第二个参数)在给定语句(第一个参数)内,第三个参数

初始值是this value from table,但在执行替换函数后,它将是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

希望这能让你更好地想象

您需要使用replace函数来替换路径。

update table_name set column_name = replace(column_name, 'oldstring', 'newstring')

这里column_name指的是你想要改变的列。

希望它能起作用。