Sql server 2008 更新脚本存储过程sql server2008
我是一个刚开始发帖的人,非常感谢你们的支持。 我想写一个程序来更新我的表Sql server 2008 更新脚本存储过程sql server2008,sql-server-2008,stored-procedures,Sql Server 2008,Stored Procedures,我是一个刚开始发帖的人,非常感谢你们的支持。 我想写一个程序来更新我的表testAd 替换函数可以做到这一点,但我有将近一百万条记录要更新,我正在尝试使用存储过程 你能看看我是怎么开始的吗?谢谢你,我很感激。今天结束前我应该想点办法……有点困难。我试过下面的那个,它似乎不起作用 CREATE PROC [dbo].[testAd] AS DECLARE @ci VARCHAR (255) UPDATE Stage.TestAdd SET @ci=AddressOne SET @ci= CASE
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
结束如果我理解正确,您希望将存储在一个字段中的值从[city]更新为匹配的[state] 您可以使用具有有效对的表变量,然后在更新中与该表联接,而不是使用长case语句 比如这里:
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
警告:这将用状态替换城市值,因此仅在需要时运行此选项
最好将其添加为一个额外字段(理想情况下是对查找表的引用),因为在更新之后,您将释放城市信息 我应该补充一点。这些城市以以下格式合并,“1234斯内西-怀俄明州-西雅图”,它们不是单独的,而是附加在其他字符串上。谢谢againHi@Kristof,非常感谢您的回答。但我必须告诉您,只有一个字段的地址字段中包含城市,必须将其替换为同一字段“1234 s俄亥俄州圣西雅图”。我希望我没有把你弄糊涂。再次感谢你的回复。我很感激。@user1689111上面的代码可以做到这一点。要使用它,只需将fieldToUpdate替换为真实的文件名,将表替换为真实的表即可name@user1689111当然,你可以把这个代码放在一个存储procedure@Kristof..Again我非常感谢您理解我的紧迫性,并为我提供了您的回复。但我刚刚测试了它,它似乎不起作用,我是按照你的建议做的。。。。