SQL 仅替换路径的一部分



我有一个表(大约 160k 行(,其中有一个名为 path 的列。 在该列中,有如下路径:

"\ab.localfolder1folder2folder3folder_x"
"\ab.localfolderA"

路径的长度不同。

我想做的是只将 .local in 之前的"ab"替换为"cd",其余部分保持不变。

我被告知使用替换功能,但不知何故,我没有让它按照我想要的方式工作。

我正在寻找正确的语法来执行此操作。

Declare @oldval as varchar(30) = '\ab.local' ;
Declare @newval as varchar(30) = '\cd.local' ; 
update yourtable set yourfield  = replace(yourfield,@oldval ,@newval) where yourfield like @oldval + '%'

已解决参考:https://stackoverflow.com/a/814551/6923146

希望它非常适合您的解决方案

UPDATE my_table
SET columnName = replace(columnName, 'oldstring', 'newstring')
WHERE columnName like '%oldstring%'

例如:

UPDATE my_table
SET columnName = replace(columnName, 'ab.', 'ab.')
WHERE columnName like '%ab.%'

如果要替换的零件位于固定位置,长度固定,则可以使用STUFF,如下所示:

UPDATE yourTable SET paths = STUFF(paths, 3, 2, 'cd')

这会将paths位置 3 开始的两个字符替换为cd

最新更新