如果其他更新脚本

时间:2016-06-13 20:00:41

标签: sql sql-server-2008

我正在尝试创建一个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]=''

我做错了什么?

2 个答案:

答案 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)

您当前的逻辑存在一些问题:

  1. 条件结构不正确 - 这是您认为目前的问题。您将需要两个更新,每个更新都包含在每个更新中。

  2. 您对like运算符的使用不使用任何通配符

  3. 你在两个陈述中的逻辑有一些重叠,因为(A或B)的反面实际上是(不是A而不是B)

  4. 以下是解决所有三个问题的方法:

    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%'