我有一张表(SQL Server
),其中引用了路径(UNC
或其他),但现在路径将要更改。
在路径列中,我有许多记录,我只需要更改路径的一部分,而不是整个路径。并且我需要在每个记录中将相同的字符串更改为新字符串。
如何使用简单的update
来实现这一点?
我有一张表(SQL Server
),其中引用了路径(UNC
或其他),但现在路径将要更改。
在路径列中,我有许多记录,我只需要更改路径的一部分,而不是整个路径。并且我需要在每个记录中将相同的字符串更改为新字符串。
如何使用简单的update
来实现这一点?
如此简单:
update my_table
set path = replace(path, 'oldstring', 'newstring')
UPDATE [table]
SET [column] = REPLACE([column], '/foo/', '/bar/')
foo
是被替换还是 bar
。 - Alex from Jitbit我尝试了上面的方法但没有得到正确的结果,下面这个可以:
update table
set path = replace(path, 'oldstring', 'newstring') where path = 'oldstring'
where path like '%oldstring%'
? - v010dyaUPDATE 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来说是无效的。
你可以使用这个查询
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
是指你想要修改的列。
希望这能起作用。
select replace(ImagePath, '~/', '../') as NewImagePath from tblMyTable
"ImagePath" 是我的列名。
"NewImagePath" 是代替 "ImagePath" 的临时列名。
"~/"是当前字符串(旧字符串)。
"../"是需要的字符串(新字符串)。
"tblMyTable" 是我数据库中的表名。
如果目标列类型不是varchar/nvarchar,比如text,我们需要将列值转换为字符串然后再进行转换:
update URL_TABLE
set Parameters = REPLACE ( cast(Parameters as varchar(max)), 'india', 'bharat')
where URL_ID='150721_013359670'
您还可以在运行时替换电子邮件模板中的大文本,这里有一个简单的示例。
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%'
。 - Derek Tomes