【发布时间】:2017-10-17 16:47:29
【问题描述】:
我的 SQl Server DB 表中有一个列,其中包含字符串中带有 %20 的 URL。 我正在尝试用下划线“_”替换 %20。 每个 URL 在某一点上都是不同的。大约有 1500 条记录需要更新。我想使用此更新对所有记录进行批量更新。
但是查询成功,数据库中没有任何变化。也许是因为 Rollback 语句?
这是我的 SQL 代码:
Begin Try
declare @newStringCount as int;
declare @oldString as nvarchar(MAX);
declare @newString as nvarchar(MAX);
declare @stringToReplace as nvarchar(MAX);
set @stringToReplace = (SELECT resourceurl FROM [dbo].[ContentResourceBak2] where resourceurl like '%%20%');
Set @oldString = '%20';
Set @newString = '_';
Update [dbo].[ContentResourceBak2]
Set resourceurl = REPLACE(@stringToReplace, @oldString, @newString)
Commit
End Try
Begin Catch
set @newStringCount = (SELECT count (resourceurl) FROM [dbo].[ContentResourceBak2] where resourceurl like '%%20%');
if @newStringCount > 0
RollBack
END Catch
所有 1500 条记录仍包含 %20 和 NO 下划线。 **更新:我用下划线替换 %20 的原因是因为 URL 映射到 blob 存储中每个单词之间有 _ 的文件。
【问题讨论】:
-
为什么下划线而不是空格?
%20是空格的占位符。下划线为%5F。 -
可能他们改变了网址在网站上的工作方式,现在他们需要更新数据库以匹配。
标签: sql sql-server replace rollback