我正在尝试创建一个If Else Update Script。这就是我到目前为止所做的:
IF (SELECT [FileType1]
FROM Document
WHERE ([FileType1] LIKE 'E-mail' OR [FileType1] LIKE 'outlook'))
UPDATE Document
SET [FilePath] = [Full Path]
ELSE ((SELECT [FileType1]
FROM Document
WHERE ([FileType1] NOT LIKE 'E-mail' OR [FileType1] NOT LIKE 'outlook'))
UPDATE Document
SET [Path] = [Full Path]
我做错了什么?基本上,如果在一个语句中找到电子邮件或Outlook,我希望 filepath 列等于完整路径列。
如果找到非电子邮件,我希望路径列等于完整路径列。
答案 0 :(得分:2)
您可以使用CASE
语句执行此操作,同时将ELSE
条件默认为自身:
Update Document
Set FilePath = Case When FileType1 In ('E-mail', 'Outlook')
Then [Full Path]
Else FilePath
End,
[Path] = Case When FileType1 Not In ('E-mail', 'Outlook')
Then [Full Path]
Else [Path]
End
我还删除了LIKE
语句(因为您只是将它们用于相等),并删除OR
语句,而不是IN
和{{1} }。
答案 1 :(得分:2)
或者,您可以简化和缩短Siyual的建议,只使用相对较新的[iif]
,即在SQL Server 2012中引入。
update d
set FilePath = iif(FileType1 in ('E-Mail', 'Outlook'), FullPath, FilePath),
Path = iif(FileType1 not in ('E-Mail', 'Outlook'), FullPath, Path)
from Document d;
希望这有帮助。