如何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%'
没有CAST
function,我得到一个错误
参数数据typesntext
对replace
函数的参数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
希望这给你更好的可视化