Sql server 仅更新列中字符串值的一部分
我是t-sql的新手。我有一个列,它将值存储为url。我想更改url的第一部分(字符串),并仅用另一个url替换这一部分。例如,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
[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