【发布时间】:2010-10-23 07:23:23
【问题描述】:
我有一个引用路径(UNC 或其他)的表(SQL Sever),但现在路径将发生变化。
在路径列中,我有很多记录,我只需要更改路径的一部分,而不是整个路径。而且我需要在每条记录中将相同的字符串更改为新字符串。
如何使用简单的update 做到这一点?
【问题讨论】:
标签: sql sql-server database database-administration
我有一个引用路径(UNC 或其他)的表(SQL Sever),但现在路径将发生变化。
在路径列中,我有很多记录,我只需要更改路径的一部分,而不是整个路径。而且我需要在每条记录中将相同的字符串更改为新字符串。
如何使用简单的update 做到这一点?
【问题讨论】:
标签: sql sql-server database database-administration
就这么简单:
update my_table
set path = replace(path, 'oldstring', 'newstring')
【讨论】:
where path like '%oldstring%'。
UPDATE [table]
SET [column] = REPLACE([column], '/foo/', '/bar/')
【讨论】:
foo 被替换还是bar(再次抱歉)
我尝试了上述方法,但没有产生正确的结果。以下是:
update table
set path = replace(path, 'oldstring', 'newstring') where path = 'oldstring'
【讨论】:
where path like '%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 函数的参数 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
希望这能给你更好的可视化
【讨论】:
select replace(ImagePath, '~/', '../') as NewImagePath from tblMyTable
“ImagePath”是我的列名。
“NewImagePath”是临时的 “ImagePath”
“~/”的列名称是我当前的字符串。(旧 字符串)
“../”是我需要的字符串。(新字符串)
“tblMyTable”是我在数据库中的表。
【讨论】:
如果目标列类型不是text之类的varchar/nvarchar,我们需要将列值转换为字符串,然后将其转换为:
update URL_TABLE
set Parameters = REPLACE ( cast(Parameters as varchar(max)), 'india', 'bharat')
where URL_ID='150721_013359670'
【讨论】:
您需要借助替换功能替换路径。
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
【讨论】: