2015-10-05 67 views
1

在Microsoft SQL Server 2008 R2中,订单'VERIFIED'或有时'COMPLETED''COMPLETED'意味着图像被发送到订单,'VERIFIED'意味着高科技“验证”这些图像为患者正确的)。SQL从选择和替换

我想标记这些研究'READ'这将保持服务器上的图像的订单,但从医生和放射科技看到的名单,以便他们的名单没有那么混乱。

现在,我要进入一张桌子,每次只能有一张CTRL + V + DOWN ARROW,因为有成千上万的人需要花费很长时间。 我是CTRL + VStatus表中的表格从'COMPLETED''VERIFIED''READ'

SELECT  StudyUID, StudyDate, StudyDesc, PatName, Status, StoragePath 
FROM  Studies 
WHERE  (Status = N'VERIFIED') 

只是我的查询来查看表。 我试图搜索帖子,但替换或插入命令,我很害怕尝试,因为我知道,一旦你改变了SQL中的东西没有撤消。

Status是列数据,我需要在质量发生变化,我想这列下,替换数据是'VERIFIED''READ'。这是我迄今为止所拥有的。

SELECT  StudyUID, StudyDate, Accession, StudyDesc, PatName, Status, StoragePath 
FROM   Studies 
SELECT Replace(Status, 'VERIFIED', 'READ') 
WHERE  (Status = N'VERIFIED') 
+0

您对撤消的关注是有效的。这就是您希望备份表或其他备份模式的确切原因。我喜欢由触发器亲自填写的历史记录表。如果你想看到所有的变化,这很容易,如果你需要恢复一个不好的更新,你会有数据。 – UnhandledExcepSean

+0

当您决定哪个答案最能解决您的问题时,您需要点击您希望显示为已接受答案旁边的复选标记。 – logixologist

回答

3

你需要的是一个UPDATE声明。

这应该为你做它:

UPDATE Studies 
SET Status = 'READ' 
WHERE Status = 'VERIFIED' 

另外,在能够“撤销”方面,有两种方法可以做到这一点。

一,您可以使用BEGIN TRANSACTION,然后您所做的任何更改都将被提交到数据库,直到您运行COMMIT TRANSACTION

二,创建一个新的数据库并复制表中的数据以备份到新数据库。 (我假设你不能做一个备份/整个数据库的恢复)

+0

哇...只是哇,首先我没有想到如此快速的回应。其次,这很好,你很棒,非常感谢你。 –

+0

@GrahamBrandt很高兴能帮到你! –

+0

@GrahamBrandt接受答案的FYI帮助有类似问题的未来用户 –

0
Update Studies Set Status = 'Read' 
where status = 'VERIFIED' 

我会跑Select * from Studies where Status = 'VERIFIED'第一,并保存记录,关闭擅长,所以你的情况下,有一个备份出错。

+0

为什么要使用excel而不是临时表?或者一个新的数据库? –

+0

如果您使用临时表,它将在会话结束后消失。如果你愿意的话,你可以把它放在一张新桌子上。我只是喜欢excel。这真是个人选择。我喜欢掩盖自己的屁股并保留一份我更新或删除的内容。 – franburr

+0

我想我应该更清楚我的术语。我的意思是用名为'Studies_TEMP'的相同模式创建一个新表,并将所有数据插入到该表中。 –

1

@graham,你是正确的,一旦你改变了SQL你不能真的很容易地回去改变它。

它看起来像你想实现的是将所有statuscompletedverifiedRead。这可以通过UPDATE声明来实现。

以下是你需要能够实现这一目标的SQL语句:

UPDATE Studies 
SET Status = 'READ' 
WHERE Status in ('VERIFIED', 'COMPLETED') 

上面的语句一定要谨慎使用。如果您确定要将整个数据库中的每个实例都更改为READ,那么以上就是您所需要的。

如果你想看到你要你做之前更新什么,你总是可以这样来做:

SELECT * FROM Studies 
    WHERE Status in ('VERIFIED', 'COMPLETED') 

如果你有一个数据库管理员可以备份将是首选数据库所以如果你犯了一个错误,你将能够从中恢复过来。

上一个关于COMMIT的回复中的注释与您要求的内容无关。这意味着如果你正在进行一系列更新,如果失败了,你应该能够回滚并且不做任何更新。在你的情况下,你只是害怕在数据库中进行更新。除非您备份数据库,否则您正在进行的更新确实是不可逆转的。我希望这可以帮助你!

+0

神圣的你真棒!非常感谢! –

+1

只要您知道正在使用的集合的大小,即使只执行一次更新,使用事务也会提供一些价值。例如,如果您希望修改300行,然后SSMS说“有300万行受到影响”,那么您可以确定自己做错了什么,并且想要回滚。也就是说,如果有任何不确定性,那么首先应该用select语句进行测试。 – CactusCake