Sql server 仅更新列中字符串值的一部分

Sql server 仅更新列中字符串值的一部分,sql-server,Sql Server,我是t-sql的新手。我有一个列,它将值存储为url。我想更改url的第一部分(字符串),并仅用另一个url替换这一部分。例如,[url//lsansps01/PMO/ITG0038 iSCOMBI数据模型项目]到[url2//lwazitest.lionsure.com/PMO/ITG0038 iSCOMBI数据模型项目] 这是我的更新查询: UPDATE dbo.RowUpdates SET ProjectWorkspaceInternalHRef = REPLACE ProjectWork

我是t-sql的新手。我有一个列,它将值存储为url。我想更改url的第一部分(字符串),并仅用另一个url替换这一部分。例如,
[url//lsansps01/PMO/ITG0038 iSCOMBI数据模型项目]
[url2//lwazitest.lionsure.com/PMO/ITG0038 iSCOMBI数据模型项目]

这是我的更新查询:

UPDATE dbo.RowUpdates
SET ProjectWorkspaceInternalHRef = REPLACE ProjectWorkspaceInternalHRef, url//lsansps01/, url2//lwazitest.lionsure.com/PMO/ITG0038 iSCOMBI Data Model Project
FROM RowUpdates
WHERE ProjectWorkspaceInternalHRef LIKE url

REPLACE
使用
()
而不是逗号分隔的参数

UPDATE dbo.RowUpdates
SET ProjectWorkspaceInternalHRef = REPLACE(ProjectWorkspaceInternalHRef, 'url//lsansps01/', 'url2//lwazitest.lionsure.com/PMO/ITG0038 iSCOMBI Data Model Project')
FROM RowUpdates
WHERE ProjectWorkspaceInternalHRef LIKE url

另一个有问题的部分是类似url的
要使其工作,应该有
'%'+url+'%'
或类似的内容。

您想查看MSDN:

从文章中:
REPLACE(字符串表达式、字符串模式、字符串替换)

因此,您希望将replace语句更改为(记住在字符串周围使用引号('):

<> P>>在SQLServer中获得的列表也是值得一看的。如果在项目的WorkStudio IntualHeRf的中间找到@ Ordl文本,则

<代码>替换()/<代码>函数将不会给出预期的结果。p> 如果只想替换前面的位,请在使用
LEFT()
函数过滤掉它们之后,使用
RIGHT()
(或
SUBSTRING()
)函数

DECLARE @OldUrl VARCHAR(500) = 'YourOdlUrl',
        @NewUrl VARCHAR(500) = 'YourNewUrl'

UPDATE dbo.RowUpdates
SET ProjectWorkspaceInternalHRef = @NewUrl + 
      RIGHT(ProjectWorkspaceInternalHRef,  LEN(ProjectWorkspaceInternalHRef) - LEN(@OldUrl ))
WHERE LEFT(ProjectWorkspaceInternalHRef, LEN(@OldUrl )) = @OldUrl 
DECLARE @OldUrl VARCHAR(500) = 'YourOdlUrl',
        @NewUrl VARCHAR(500) = 'YourNewUrl'

UPDATE dbo.RowUpdates
SET ProjectWorkspaceInternalHRef = @NewUrl + 
      RIGHT(ProjectWorkspaceInternalHRef,  LEN(ProjectWorkspaceInternalHRef) - LEN(@OldUrl ))
WHERE LEFT(ProjectWorkspaceInternalHRef, LEN(@OldUrl )) = @OldUrl