更新脚本存储过程sql server 2008

时间:2012-09-21 14:51:40

标签: sql-server-2008 stored-procedures

我发布问题相当新,我非常感谢您的支持。 我想写一个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

1 个答案:

答案 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 

警告:这会将城市值替换为州,因此只有在您想要的情况下才能运行。

将其添加为额外字段(理想情况下是对查找表的引用)会更好,因为在更新后您将松散城市信息。