我正在尝试创建一个If Else Update Script。这就是我到目前为止所做的:
IF (SELECT [FileType1] FROM Document
WHERE ([FileType1] like 'E-mail' or [FileType1] like 'outlook'))
UPDATE Document
SET [FilePath]=''
ELSE ((SELECT [FileType1] FROM Document
WHERE ([FileType1] not like 'E-mail' or [FileType1] not like 'outlook'))
UPDATE Document
SET [Path]=''
我做错了什么?
答案 0 :(得分:2)
这可以使用case
表达式完成。如果值准确,请使用=
代替like
来比较值。
update Document
set [FilePath]= case when [FileType1] like 'E-mail' or [FileType1] like 'outlook' then ''
else [FilePath] end
,[Path] = case when [FileType1] not like 'E-mail' or [FileType1] not like 'outlook' then ''
else [Path] end
答案 1 :(得分:2)
您当前的逻辑存在一些问题:
条件结构不正确 - 这是您认为目前的问题。您将需要两个更新,每个更新都包含在每个更新中。
您对like
运算符的使用不使用任何通配符
你在两个陈述中的逻辑有一些重叠,因为(A或B)的反面实际上是(不是A而不是B)
以下是解决所有三个问题的方法:
UPDATE Document
SET [FilePath] = ''
WHERE [FileType1] like '%E-mail%' or [FileType1] like '%outlook%'
UPDATE Document
SET [Path] = ''
WHERE [FileType1] not like '%E-mail%' and [FileType1] not like '%outlook%'