![](/img/trans.png)
[英]How to replace a string in a SQL Server Table Column with the same size of text
[英]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
功能,我收到了一個錯誤
參數數據類型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
但是在執行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.