Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 更新脚本存储过程sql server2008_Sql Server 2008_Stored Procedures - Fatal编程技术网

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我非常感谢您理解我的紧迫性,并为我提供了您的回复。但我刚刚测试了它,它似乎不起作用,我是按照你的建议做的。。。。