SQL选择和替换

时间:2015-10-05 18:33:52

标签: sql sql-server sql-server-2008

在Microsoft SQL Server 2008 R2中,订单为'VERIFIED'或有时为'COMPLETED''COMPLETED'表示图片已发送到订单,'VERIFIED'表示技术已“验证”图像对于该患者是正确的。)

我想标记这些研究'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')

3 个答案:

答案 0 :(得分:3)

您需要的是UPDATE声明。

这应该适合你:

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

此外,就能够“撤消”而言,有两种方法可以做到这一点。

其一,您可以使用BEGIN TRANSACTION,然后在您运行COMMIT TRANSACTION之前,您所做的任何更改都不会提交到数据库。

二,创建一个新数据库并从表中复制数据以备份到新数据库。 (我假设您无法对完整数据库进行备份/恢复)

答案 1 :(得分:1)

@graham,你说错了,一旦你对SQL做出改变,你就不能轻易地回去改变它。

您希望实现的目标是将statuscompleted的所有verified更改为Read。使用UPDATE语句可以实现这一点。

以下是您需要能够实现此目的的SQL语句:

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

必须谨慎使用上述声明。如果您确定要将整个数据库中的每个实例更改为READ,那么上述内容就是您所需要的。

如果你想在做之前看看你要更新的内容,你可以这样做:

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

如果您有一个可以备份数据库的数据库管理员,那么如果您确实犯了错误,您就可以从中恢复。

之前关于COMMIT的答案中的注释与您提出的问题并不完全相关。这意味着,如果您正在进行一系列更新,如果一个更新,您应该能够回滚并且不进行任何更新。在您的情况下,您只是害怕在数据库中进行更新。除非备份数据库,否则您正在进行的更新确实是不可逆转的。我希望这可以帮助你!

答案 2 :(得分:0)

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

我会首先运行Select * from Studies where Status = 'VERIFIED'并将这些记录保存到Excel中,以便在出现问题时备份。