【发布时间】:2020-02-28 22:41:16
【问题描述】:
几年后我正在重新审视 MS SQL,所以对一个基本问题表示歉意!
我正在执行一些地址数据清理,以将 DR 等缩写词扩展为“DRIVE”RD 为“ROAD”等,以帮助识别重复地址。
我正在探索通过将现有的 10 个连续 SET .. WHERE .. 语句块放入批处理或其他方法来优化查询的方法,因为我正在处理大约 50 万条记录。
当我将现有的 SET .. WHERE .. 语句块转换为一个简单的批处理时,这会引发“关键字 where 附近的语法不正确”错误。有没有人有任何想法或建议来解决这个问题?这是代码的样子(带有 SET .. WHERE .. 语句的精简列表):
declare @batchSize int = 10000;
declare @rows int = -1;
while @rows <> 0
begin
raiserror('Beginning loop. Last ROWCOUNT was %d',0,1, @rows) with nowait;
update top (@batchSize) DBO.POSTAL_ADDRESS_MATCH_1
SET ADDRESS1=REPLACE(ADDRESS1,' DR',' DRIVE') WHERE RIGHT(ADDRESS1,3) LIKE ' DR'
-- 9 other SET WHERE statements go here
where ID between @startID and @startID + @batchSize;
set @rows = @@ROWCOUNT;
set @startID += @batchSize;
end;
非常感谢您的帮助。
【问题讨论】:
标签: sql sql-server tsql