我是t-sql的新手。我有一个列值存储值为url' s。我想更改网址的第一部分(字符串),并仅用另一个网址替换此部分。例如,[url//lsansps01/PMO/ITG0038 iSCOMBI Data Model Project]
到[url2//lwazitest.lionsure.com/PMO/ITG0038 iSCOMBI Data Model Project]
这是我的更新查询:
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
答案 0 :(得分:0)
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
另一个可疑的部分是LIKE url
,因为它应该有'%'+url+'%'
或类似的东西。
答案 1 :(得分:0)
您想查看MSDN:REPLACE (Transact-SQL)
来自文章:
REPLACE ( string_expression , string_pattern , string_replacement )
因此您想要将替换语句更改为(请记住在字符串周围使用引号(')):
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
还值得查看SQL Server中的String Functions (Transact-SQL)列表。
答案 2 :(得分:0)
Replace()
函数将无法提供您的预期结果。
如果您只想替换前面的位,请在使用RIGHT()
函数过滤后使用SUBSTRING()
(或LEFT()
)函数。
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