我发布问题相当新,我非常感谢您的支持。
我想写一个proc来更新我的表testAd
。
替换功能可以做到,但我有近百万条记录要更新,我正在尝试使用存储过程。
你能看一下我的开始吗?谢谢你,我很感激。我今天应该拿出一些东西......一种艰难的情况。我试过下面的那个似乎不起作用。
CREATE PROC [dbo].[testAd]
AS
DECLARE @ci VARCHAR (255)
UPDATE Stage.TestAdd
SET @ci=AddressOne
SET @ci= CASE @ci
WHEN 'Des Moines' THEN 'IA'
WHEN 'Seattle' THEN 'WA'
WHEN 'Pheonix' THEN 'Az'
WHEN 'Phx' THEN 'Az'
.
.
ELSE @ci
END
答案 0 :(得分:0)
如果我理解正确,您想要将存储在一个字段中的值从[city]更新为匹配[state]
您可以使用具有有效对的表变量,而不是使用长case语句,然后在update中加入该表
像这里的东西:declare @cityInState as table(city varchar(50), state char(2))
insert into @cityInState
values
('Des Moines','IA')
,('Seattle', 'WA')
,('Pheonix','Az')
,('Phx','Az')
-- etc ...
update yt
set
fieldToUpdate = cis.state
from
yourTable yt
inner join @cityInState cit on yt.fieldToUpdate = cit.city
警告:这会将城市值替换为州,因此只有在您想要的情况下才能运行。
将其添加为额外字段(理想情况下是对查找表的引用)会更好,因为在更新后您将松散城市信息。