我有一个SQL Sever
引用路径(UNC
或其他方式)的表(),但是现在路径将更改。
在路径列中,我有很多记录,我只需要更改路径的一部分,而不需要更改整个路径。而且我需要在每个记录中将相同的字符串更改为新的字符串。
我该如何简单update
?
我有一个SQL Sever
引用路径(UNC
或其他方式)的表(),但是现在路径将更改。
在路径列中,我有很多记录,我只需要更改路径的一部分,而不需要更改整个路径。而且我需要在每个记录中将相同的字符串更改为新的字符串。
我该如何简单update
?
Answers:
UPDATE [table]
SET [column] = REPLACE([column], '/foo/', '/bar/')
foo
是被替换还是bar
(很抱歉)
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
对于函数的参数1无效replace
。
您可以使用此查询
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
希望这能给您更好的可视化
您需要借助替换功能来替换路径。
update table_name set column_name = replace(column_name, 'oldstring', 'newstring')
这里column_name
是指您要更改的列。
希望它能工作。
您还可以在运行时替换电子邮件模板的大文本,这是一个简单的示例。
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
where path like '%oldstring%'
如果有大量数据,我通常会添加。