簡體   English   中英

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

[英]How to replace a string in a SQL Server Table Column

我有一個表( SQL Sever )引用路徑( UNC或其他),但現在路徑將會改變。

在路徑列中,我有很多記錄,我只需要更改路徑的一部分,而不是整個路徑。 我需要在每條記錄中將相同的字符串更改為新字符串。

如何通過簡單的update來完成此操作?

就這么簡單:

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功能,我收到了一個錯誤

參數數據類型ntextreplace函數的參數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但是在執行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

希望這能為您提供更好的可視化

select replace(ImagePath, '~/', '../') as NewImagePath from tblMyTable 

其中“ImagePath”是我的列名。
“NewImagePath”是臨時列名“ImagePath”的名稱
“〜/”是我當前的字符串。(舊字符串)
“../”是我需要的字符串。(新字符串)
“tblMyTable”是我在數據庫中的表。

如果目標列類型不是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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM